{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "pdf-title"
    ]
   },
   "source": [
    "# Softmax exercise\n",
    "\n",
    "*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n",
    "\n",
    "This exercise is analogous to the SVM exercise. You will:\n",
    "\n",
    "- implement a fully-vectorized **loss function** for the Softmax classifier\n",
    "- implement the fully-vectorized expression for its **analytic gradient**\n",
    "- **check your implementation** with numerical gradient\n",
    "- use a validation set to **tune the learning rate and regularization** strength\n",
    "- **optimize** the loss function with **SGD**\n",
    "- **visualize** the final learned weights\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "tags": [
     "pdf-ignore"
    ]
   },
   "outputs": [],
   "source": [
    "import random\n",
    "import numpy as np\n",
    "from cs231n.data_utils import load_CIFAR10\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "# for auto-reloading extenrnal modules\n",
    "# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": [
     "pdf-ignore"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train data shape:  (49000, 3073)\n",
      "Train labels shape:  (49000,)\n",
      "Validation data shape:  (1000, 3073)\n",
      "Validation labels shape:  (1000,)\n",
      "Test data shape:  (1000, 3073)\n",
      "Test labels shape:  (1000,)\n",
      "dev data shape:  (500, 3073)\n",
      "dev labels shape:  (500,)\n"
     ]
    }
   ],
   "source": [
    "def get_CIFAR10_data(num_training=49000, num_validation=1000, num_test=1000, num_dev=500):\n",
    "    \"\"\"\n",
    "    Load the CIFAR-10 dataset from disk and perform preprocessing to prepare\n",
    "    it for the linear classifier. These are the same steps as we used for the\n",
    "    SVM, but condensed to a single function.  \n",
    "    \"\"\"\n",
    "    # Load the raw CIFAR-10 data\n",
    "    cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n",
    "    \n",
    "    # Cleaning up variables to prevent loading data multiple times (which may cause memory issue)\n",
    "    try:\n",
    "       del X_train, y_train\n",
    "       del X_test, y_test\n",
    "       print('Clear previously loaded data.')\n",
    "    except:\n",
    "       pass\n",
    "\n",
    "    X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n",
    "    \n",
    "    # subsample the data\n",
    "    mask = list(range(num_training, num_training + num_validation))\n",
    "    X_val = X_train[mask]\n",
    "    y_val = y_train[mask]\n",
    "    mask = list(range(num_training))\n",
    "    X_train = X_train[mask]\n",
    "    y_train = y_train[mask]\n",
    "    mask = list(range(num_test))\n",
    "    X_test = X_test[mask]\n",
    "    y_test = y_test[mask]\n",
    "    mask = np.random.choice(num_training, num_dev, replace=False)\n",
    "    X_dev = X_train[mask]\n",
    "    y_dev = y_train[mask]\n",
    "    \n",
    "    # Preprocessing: reshape the image data into rows\n",
    "    X_train = np.reshape(X_train, (X_train.shape[0], -1))\n",
    "    X_val = np.reshape(X_val, (X_val.shape[0], -1))\n",
    "    X_test = np.reshape(X_test, (X_test.shape[0], -1))\n",
    "    X_dev = np.reshape(X_dev, (X_dev.shape[0], -1))\n",
    "    \n",
    "    # Normalize the data: subtract the mean image\n",
    "    mean_image = np.mean(X_train, axis = 0)\n",
    "    X_train -= mean_image\n",
    "    X_val -= mean_image\n",
    "    X_test -= mean_image\n",
    "    X_dev -= mean_image\n",
    "    \n",
    "    # add bias dimension and transform into columns\n",
    "    X_train = np.hstack([X_train, np.ones((X_train.shape[0], 1))])\n",
    "    X_val = np.hstack([X_val, np.ones((X_val.shape[0], 1))])\n",
    "    X_test = np.hstack([X_test, np.ones((X_test.shape[0], 1))])\n",
    "    X_dev = np.hstack([X_dev, np.ones((X_dev.shape[0], 1))])\n",
    "    \n",
    "    return X_train, y_train, X_val, y_val, X_test, y_test, X_dev, y_dev\n",
    "\n",
    "\n",
    "# Invoke the above function to get our data.\n",
    "X_train, y_train, X_val, y_val, X_test, y_test, X_dev, y_dev = get_CIFAR10_data()\n",
    "print('Train data shape: ', X_train.shape)\n",
    "print('Train labels shape: ', y_train.shape)\n",
    "print('Validation data shape: ', X_val.shape)\n",
    "print('Validation labels shape: ', y_val.shape)\n",
    "print('Test data shape: ', X_test.shape)\n",
    "print('Test labels shape: ', y_test.shape)\n",
    "print('dev data shape: ', X_dev.shape)\n",
    "print('dev labels shape: ', y_dev.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Softmax Classifier\n",
    "\n",
    "Your code for this section will all be written inside `cs231n/classifiers/softmax.py`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss: 2.358626\n",
      "sanity check: 2.302585\n"
     ]
    }
   ],
   "source": [
    "# First implement the naive softmax loss function with nested loops.\n",
    "# Open the file cs231n/classifiers/softmax.py and implement the\n",
    "# softmax_loss_naive function.\n",
    "\n",
    "from cs231n.classifiers.softmax import softmax_loss_naive\n",
    "import time\n",
    "\n",
    "# Generate a random softmax weight matrix and use it to compute the loss.\n",
    "W = np.random.randn(3073, 10) * 0.0001\n",
    "loss, grad = softmax_loss_naive(W, X_dev, y_dev, 0.0)\n",
    "\n",
    "# As a rough sanity check, our loss should be something close to -log(0.1).\n",
    "print('loss: %f' % loss)\n",
    "print('sanity check: %f' % (-np.log(0.1)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "pdf-inline"
    ]
   },
   "source": [
    "**Inline Question 1**\n",
    "\n",
    "Why do we expect our loss to be close to -log(0.1)? Explain briefly.**\n",
    "\n",
    "$\\color{blue}{\\textit Your Answer:}$ *Fill this in* \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "numerical: 1.052764 analytic: 1.052764, relative error: 3.779300e-08\n",
      "numerical: -0.484269 analytic: -0.484269, relative error: 9.702188e-08\n",
      "numerical: -1.279783 analytic: -1.279783, relative error: 3.336650e-08\n",
      "numerical: -4.182795 analytic: -4.182795, relative error: 1.992622e-08\n",
      "numerical: -2.682880 analytic: -2.682880, relative error: 1.013938e-10\n",
      "numerical: 1.495278 analytic: 1.495279, relative error: 4.207203e-08\n",
      "numerical: -1.096417 analytic: -1.096417, relative error: 3.835106e-09\n",
      "numerical: -0.436159 analytic: -0.436159, relative error: 3.687693e-08\n",
      "numerical: 1.074673 analytic: 1.074673, relative error: 3.308353e-09\n",
      "numerical: 2.152178 analytic: 2.152178, relative error: 7.518772e-09\n",
      "numerical: -0.706691 analytic: -0.707250, relative error: 3.949488e-04\n",
      "numerical: 0.436279 analytic: 0.435745, relative error: 6.121925e-04\n",
      "numerical: -2.771575 analytic: -2.772084, relative error: 9.175188e-05\n",
      "numerical: -0.195820 analytic: -0.196344, relative error: 1.336442e-03\n",
      "numerical: -0.292538 analytic: -0.293037, relative error: 8.514440e-04\n",
      "numerical: 2.232474 analytic: 2.231974, relative error: 1.121058e-04\n",
      "numerical: -0.581104 analytic: -0.581574, relative error: 4.042128e-04\n",
      "numerical: 2.690070 analytic: 2.689524, relative error: 1.014096e-04\n",
      "numerical: 2.764539 analytic: 2.764019, relative error: 9.420453e-05\n",
      "numerical: 2.475328 analytic: 2.474814, relative error: 1.037544e-04\n"
     ]
    }
   ],
   "source": [
    "# Complete the implementation of softmax_loss_naive and implement a (naive)\n",
    "# version of the gradient that uses nested loops.\n",
    "loss, grad = softmax_loss_naive(W, X_dev, y_dev, 0.0)\n",
    "\n",
    "# As we did for the SVM, use numeric gradient checking as a debugging tool.\n",
    "# The numeric gradient should be close to the analytic gradient.\n",
    "from cs231n.gradient_check import grad_check_sparse\n",
    "f = lambda w: softmax_loss_naive(w, X_dev, y_dev, 0.0)[0]\n",
    "grad_numerical = grad_check_sparse(f, W, grad, 10)\n",
    "\n",
    "# similar to SVM case, do another gradient check with regularization\n",
    "loss, grad = softmax_loss_naive(W, X_dev, y_dev, 5e1)\n",
    "f = lambda w: softmax_loss_naive(w, X_dev, y_dev, 5e1)[0]\n",
    "grad_numerical = grad_check_sparse(f, W, grad, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "naive loss: 2.358626e+00 computed in 0.080783s\n",
      "vectorized loss: 2.358626e+00 computed in 0.003997s\n",
      "Loss difference: 0.000000\n",
      "Gradient difference: 0.000000\n"
     ]
    }
   ],
   "source": [
    "# Now that we have a naive implementation of the softmax loss function and its gradient,\n",
    "# implement a vectorized version in softmax_loss_vectorized.\n",
    "# The two versions should compute the same results, but the vectorized version should be\n",
    "# much faster.\n",
    "tic = time.time()\n",
    "loss_naive, grad_naive = softmax_loss_naive(W, X_dev, y_dev, 0.000005)\n",
    "toc = time.time()\n",
    "print('naive loss: %e computed in %fs' % (loss_naive, toc - tic))\n",
    "\n",
    "from cs231n.classifiers.softmax import softmax_loss_vectorized\n",
    "tic = time.time()\n",
    "loss_vectorized, grad_vectorized = softmax_loss_vectorized(W, X_dev, y_dev, 0.000005)\n",
    "toc = time.time()\n",
    "print('vectorized loss: %e computed in %fs' % (loss_vectorized, toc - tic))\n",
    "\n",
    "# As we did for the SVM, we use the Frobenius norm to compare the two versions\n",
    "# of the gradient.\n",
    "grad_difference = np.linalg.norm(grad_naive - grad_vectorized, ord='fro')\n",
    "print('Loss difference: %f' % np.abs(loss_naive - loss_vectorized))\n",
    "print('Gradient difference: %f' % grad_difference)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "tuning",
    "tags": [
     "code"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr 1.000000e-07 reg 2.500000e+03 train accuracy: 0.262510 val accuracy: 0.263000\n",
      "lr 1.000000e-07 reg 4.482759e+03 train accuracy: 0.263429 val accuracy: 0.270000\n",
      "lr 1.000000e-07 reg 6.465517e+03 train accuracy: 0.264408 val accuracy: 0.268000\n",
      "lr 1.000000e-07 reg 8.448276e+03 train accuracy: 0.254184 val accuracy: 0.257000\n",
      "lr 1.000000e-07 reg 1.043103e+04 train accuracy: 0.265469 val accuracy: 0.250000\n",
      "lr 1.000000e-07 reg 1.241379e+04 train accuracy: 0.262347 val accuracy: 0.248000\n",
      "lr 1.000000e-07 reg 1.439655e+04 train accuracy: 0.255694 val accuracy: 0.247000\n",
      "lr 1.000000e-07 reg 1.637931e+04 train accuracy: 0.251633 val accuracy: 0.288000\n",
      "lr 1.000000e-07 reg 1.836207e+04 train accuracy: 0.262061 val accuracy: 0.262000\n",
      "lr 1.000000e-07 reg 2.034483e+04 train accuracy: 0.263816 val accuracy: 0.256000\n",
      "lr 1.000000e-07 reg 2.232759e+04 train accuracy: 0.263898 val accuracy: 0.259000\n",
      "lr 1.000000e-07 reg 2.431034e+04 train accuracy: 0.253469 val accuracy: 0.268000\n",
      "lr 1.000000e-07 reg 2.629310e+04 train accuracy: 0.256776 val accuracy: 0.270000\n",
      "lr 1.000000e-07 reg 2.827586e+04 train accuracy: 0.258429 val accuracy: 0.290000\n",
      "lr 1.000000e-07 reg 3.025862e+04 train accuracy: 0.255429 val accuracy: 0.260000\n",
      "lr 1.000000e-07 reg 3.224138e+04 train accuracy: 0.268694 val accuracy: 0.271000\n",
      "lr 1.000000e-07 reg 3.422414e+04 train accuracy: 0.259224 val accuracy: 0.261000\n",
      "lr 1.000000e-07 reg 3.620690e+04 train accuracy: 0.257000 val accuracy: 0.266000\n",
      "lr 1.000000e-07 reg 3.818966e+04 train accuracy: 0.257735 val accuracy: 0.247000\n",
      "lr 1.000000e-07 reg 4.017241e+04 train accuracy: 0.264408 val accuracy: 0.265000\n",
      "lr 1.000000e-07 reg 4.215517e+04 train accuracy: 0.267939 val accuracy: 0.260000\n",
      "lr 1.000000e-07 reg 4.413793e+04 train accuracy: 0.258143 val accuracy: 0.282000\n",
      "lr 1.000000e-07 reg 4.612069e+04 train accuracy: 0.262673 val accuracy: 0.287000\n",
      "lr 1.000000e-07 reg 4.810345e+04 train accuracy: 0.257571 val accuracy: 0.271000\n",
      "lr 1.000000e-07 reg 5.008621e+04 train accuracy: 0.264265 val accuracy: 0.242000\n",
      "lr 1.000000e-07 reg 5.206897e+04 train accuracy: 0.257061 val accuracy: 0.265000\n",
      "lr 1.000000e-07 reg 5.405172e+04 train accuracy: 0.258898 val accuracy: 0.268000\n",
      "lr 1.000000e-07 reg 5.603448e+04 train accuracy: 0.257959 val accuracy: 0.255000\n",
      "lr 1.000000e-07 reg 5.801724e+04 train accuracy: 0.262245 val accuracy: 0.269000\n",
      "lr 1.000000e-07 reg 6.000000e+04 train accuracy: 0.259204 val accuracy: 0.237000\n",
      "lr 2.689655e-07 reg 2.500000e+03 train accuracy: 0.303776 val accuracy: 0.306000\n",
      "lr 2.689655e-07 reg 4.482759e+03 train accuracy: 0.300367 val accuracy: 0.301000\n",
      "lr 2.689655e-07 reg 6.465517e+03 train accuracy: 0.307122 val accuracy: 0.308000\n",
      "lr 2.689655e-07 reg 8.448276e+03 train accuracy: 0.300306 val accuracy: 0.301000\n",
      "lr 2.689655e-07 reg 1.043103e+04 train accuracy: 0.307959 val accuracy: 0.313000\n",
      "lr 2.689655e-07 reg 1.241379e+04 train accuracy: 0.300878 val accuracy: 0.284000\n",
      "lr 2.689655e-07 reg 1.439655e+04 train accuracy: 0.307122 val accuracy: 0.300000\n",
      "lr 2.689655e-07 reg 1.637931e+04 train accuracy: 0.303571 val accuracy: 0.288000\n",
      "lr 2.689655e-07 reg 1.836207e+04 train accuracy: 0.303163 val accuracy: 0.284000\n",
      "lr 2.689655e-07 reg 2.034483e+04 train accuracy: 0.301469 val accuracy: 0.292000\n",
      "lr 2.689655e-07 reg 2.232759e+04 train accuracy: 0.305449 val accuracy: 0.312000\n",
      "lr 2.689655e-07 reg 2.431034e+04 train accuracy: 0.302531 val accuracy: 0.269000\n",
      "lr 2.689655e-07 reg 2.629310e+04 train accuracy: 0.296061 val accuracy: 0.305000\n",
      "lr 2.689655e-07 reg 2.827586e+04 train accuracy: 0.302980 val accuracy: 0.294000\n",
      "lr 2.689655e-07 reg 3.025862e+04 train accuracy: 0.307143 val accuracy: 0.308000\n",
      "lr 2.689655e-07 reg 3.224138e+04 train accuracy: 0.306163 val accuracy: 0.319000\n",
      "lr 2.689655e-07 reg 3.422414e+04 train accuracy: 0.307082 val accuracy: 0.306000\n",
      "lr 2.689655e-07 reg 3.620690e+04 train accuracy: 0.301224 val accuracy: 0.298000\n",
      "lr 2.689655e-07 reg 3.818966e+04 train accuracy: 0.303224 val accuracy: 0.283000\n",
      "lr 2.689655e-07 reg 4.017241e+04 train accuracy: 0.303449 val accuracy: 0.300000\n",
      "lr 2.689655e-07 reg 4.215517e+04 train accuracy: 0.305490 val accuracy: 0.311000\n",
      "lr 2.689655e-07 reg 4.413793e+04 train accuracy: 0.304980 val accuracy: 0.299000\n",
      "lr 2.689655e-07 reg 4.612069e+04 train accuracy: 0.304898 val accuracy: 0.293000\n",
      "lr 2.689655e-07 reg 4.810345e+04 train accuracy: 0.304143 val accuracy: 0.319000\n",
      "lr 2.689655e-07 reg 5.008621e+04 train accuracy: 0.301061 val accuracy: 0.269000\n",
      "lr 2.689655e-07 reg 5.206897e+04 train accuracy: 0.305918 val accuracy: 0.310000\n",
      "lr 2.689655e-07 reg 5.405172e+04 train accuracy: 0.299592 val accuracy: 0.302000\n",
      "lr 2.689655e-07 reg 5.603448e+04 train accuracy: 0.303673 val accuracy: 0.315000\n",
      "lr 2.689655e-07 reg 5.801724e+04 train accuracy: 0.302163 val accuracy: 0.319000\n",
      "lr 2.689655e-07 reg 6.000000e+04 train accuracy: 0.305490 val accuracy: 0.313000\n",
      "lr 4.379310e-07 reg 2.500000e+03 train accuracy: 0.323000 val accuracy: 0.326000\n",
      "lr 4.379310e-07 reg 4.482759e+03 train accuracy: 0.324184 val accuracy: 0.332000\n",
      "lr 4.379310e-07 reg 6.465517e+03 train accuracy: 0.325184 val accuracy: 0.322000\n",
      "lr 4.379310e-07 reg 8.448276e+03 train accuracy: 0.324755 val accuracy: 0.311000\n",
      "lr 4.379310e-07 reg 1.043103e+04 train accuracy: 0.326265 val accuracy: 0.321000\n",
      "lr 4.379310e-07 reg 1.241379e+04 train accuracy: 0.329000 val accuracy: 0.307000\n",
      "lr 4.379310e-07 reg 1.439655e+04 train accuracy: 0.326633 val accuracy: 0.327000\n",
      "lr 4.379310e-07 reg 1.637931e+04 train accuracy: 0.320306 val accuracy: 0.312000\n",
      "lr 4.379310e-07 reg 1.836207e+04 train accuracy: 0.328306 val accuracy: 0.317000\n",
      "lr 4.379310e-07 reg 2.034483e+04 train accuracy: 0.326143 val accuracy: 0.311000\n",
      "lr 4.379310e-07 reg 2.232759e+04 train accuracy: 0.326469 val accuracy: 0.324000\n",
      "lr 4.379310e-07 reg 2.431034e+04 train accuracy: 0.321143 val accuracy: 0.324000\n",
      "lr 4.379310e-07 reg 2.629310e+04 train accuracy: 0.322694 val accuracy: 0.350000\n",
      "lr 4.379310e-07 reg 2.827586e+04 train accuracy: 0.321776 val accuracy: 0.336000\n",
      "lr 4.379310e-07 reg 3.025862e+04 train accuracy: 0.322592 val accuracy: 0.311000\n",
      "lr 4.379310e-07 reg 3.224138e+04 train accuracy: 0.324408 val accuracy: 0.315000\n",
      "lr 4.379310e-07 reg 3.422414e+04 train accuracy: 0.329061 val accuracy: 0.324000\n",
      "lr 4.379310e-07 reg 3.620690e+04 train accuracy: 0.324082 val accuracy: 0.320000\n",
      "lr 4.379310e-07 reg 3.818966e+04 train accuracy: 0.323755 val accuracy: 0.326000\n",
      "lr 4.379310e-07 reg 4.017241e+04 train accuracy: 0.323469 val accuracy: 0.303000\n",
      "lr 4.379310e-07 reg 4.215517e+04 train accuracy: 0.321184 val accuracy: 0.309000\n",
      "lr 4.379310e-07 reg 4.413793e+04 train accuracy: 0.325245 val accuracy: 0.327000\n",
      "lr 4.379310e-07 reg 4.612069e+04 train accuracy: 0.325755 val accuracy: 0.333000\n",
      "lr 4.379310e-07 reg 4.810345e+04 train accuracy: 0.325510 val accuracy: 0.333000\n",
      "lr 4.379310e-07 reg 5.008621e+04 train accuracy: 0.323694 val accuracy: 0.342000\n",
      "lr 4.379310e-07 reg 5.206897e+04 train accuracy: 0.324122 val accuracy: 0.321000\n",
      "lr 4.379310e-07 reg 5.405172e+04 train accuracy: 0.326959 val accuracy: 0.332000\n",
      "lr 4.379310e-07 reg 5.603448e+04 train accuracy: 0.331061 val accuracy: 0.315000\n",
      "lr 4.379310e-07 reg 5.801724e+04 train accuracy: 0.326020 val accuracy: 0.329000\n",
      "lr 4.379310e-07 reg 6.000000e+04 train accuracy: 0.323531 val accuracy: 0.309000\n",
      "lr 6.068966e-07 reg 2.500000e+03 train accuracy: 0.341531 val accuracy: 0.337000\n",
      "lr 6.068966e-07 reg 4.482759e+03 train accuracy: 0.336551 val accuracy: 0.329000\n",
      "lr 6.068966e-07 reg 6.465517e+03 train accuracy: 0.336633 val accuracy: 0.336000\n",
      "lr 6.068966e-07 reg 8.448276e+03 train accuracy: 0.340041 val accuracy: 0.308000\n",
      "lr 6.068966e-07 reg 1.043103e+04 train accuracy: 0.336898 val accuracy: 0.332000\n",
      "lr 6.068966e-07 reg 1.241379e+04 train accuracy: 0.335796 val accuracy: 0.337000\n",
      "lr 6.068966e-07 reg 1.439655e+04 train accuracy: 0.337490 val accuracy: 0.332000\n",
      "lr 6.068966e-07 reg 1.637931e+04 train accuracy: 0.336898 val accuracy: 0.338000\n",
      "lr 6.068966e-07 reg 1.836207e+04 train accuracy: 0.339041 val accuracy: 0.335000\n",
      "lr 6.068966e-07 reg 2.034483e+04 train accuracy: 0.335082 val accuracy: 0.355000\n",
      "lr 6.068966e-07 reg 2.232759e+04 train accuracy: 0.339429 val accuracy: 0.326000\n",
      "lr 6.068966e-07 reg 2.431034e+04 train accuracy: 0.336776 val accuracy: 0.331000\n",
      "lr 6.068966e-07 reg 2.629310e+04 train accuracy: 0.341388 val accuracy: 0.310000\n",
      "lr 6.068966e-07 reg 2.827586e+04 train accuracy: 0.335490 val accuracy: 0.307000\n",
      "lr 6.068966e-07 reg 3.025862e+04 train accuracy: 0.339531 val accuracy: 0.339000\n",
      "lr 6.068966e-07 reg 3.224138e+04 train accuracy: 0.339429 val accuracy: 0.331000\n",
      "lr 6.068966e-07 reg 3.422414e+04 train accuracy: 0.338265 val accuracy: 0.334000\n",
      "lr 6.068966e-07 reg 3.620690e+04 train accuracy: 0.337020 val accuracy: 0.330000\n",
      "lr 6.068966e-07 reg 3.818966e+04 train accuracy: 0.334347 val accuracy: 0.317000\n",
      "lr 6.068966e-07 reg 4.017241e+04 train accuracy: 0.336204 val accuracy: 0.347000\n",
      "lr 6.068966e-07 reg 4.215517e+04 train accuracy: 0.336000 val accuracy: 0.330000\n",
      "lr 6.068966e-07 reg 4.413793e+04 train accuracy: 0.339224 val accuracy: 0.320000\n",
      "lr 6.068966e-07 reg 4.612069e+04 train accuracy: 0.339327 val accuracy: 0.332000\n",
      "lr 6.068966e-07 reg 4.810345e+04 train accuracy: 0.338837 val accuracy: 0.339000\n",
      "lr 6.068966e-07 reg 5.008621e+04 train accuracy: 0.336878 val accuracy: 0.333000\n",
      "lr 6.068966e-07 reg 5.206897e+04 train accuracy: 0.336408 val accuracy: 0.333000\n",
      "lr 6.068966e-07 reg 5.405172e+04 train accuracy: 0.340714 val accuracy: 0.329000\n",
      "lr 6.068966e-07 reg 5.603448e+04 train accuracy: 0.339122 val accuracy: 0.361000\n",
      "lr 6.068966e-07 reg 5.801724e+04 train accuracy: 0.341408 val accuracy: 0.317000\n",
      "lr 6.068966e-07 reg 6.000000e+04 train accuracy: 0.339102 val accuracy: 0.339000\n",
      "lr 7.758621e-07 reg 2.500000e+03 train accuracy: 0.349816 val accuracy: 0.350000\n",
      "lr 7.758621e-07 reg 4.482759e+03 train accuracy: 0.350122 val accuracy: 0.346000\n",
      "lr 7.758621e-07 reg 6.465517e+03 train accuracy: 0.349980 val accuracy: 0.357000\n",
      "lr 7.758621e-07 reg 8.448276e+03 train accuracy: 0.349265 val accuracy: 0.345000\n",
      "lr 7.758621e-07 reg 1.043103e+04 train accuracy: 0.354286 val accuracy: 0.343000\n",
      "lr 7.758621e-07 reg 1.241379e+04 train accuracy: 0.352102 val accuracy: 0.342000\n",
      "lr 7.758621e-07 reg 1.439655e+04 train accuracy: 0.349367 val accuracy: 0.343000\n",
      "lr 7.758621e-07 reg 1.637931e+04 train accuracy: 0.346041 val accuracy: 0.340000\n",
      "lr 7.758621e-07 reg 1.836207e+04 train accuracy: 0.350816 val accuracy: 0.334000\n",
      "lr 7.758621e-07 reg 2.034483e+04 train accuracy: 0.347122 val accuracy: 0.352000\n",
      "lr 7.758621e-07 reg 2.232759e+04 train accuracy: 0.352000 val accuracy: 0.332000\n",
      "lr 7.758621e-07 reg 2.431034e+04 train accuracy: 0.346571 val accuracy: 0.331000\n",
      "lr 7.758621e-07 reg 2.629310e+04 train accuracy: 0.349102 val accuracy: 0.362000\n",
      "lr 7.758621e-07 reg 2.827586e+04 train accuracy: 0.347857 val accuracy: 0.327000\n",
      "lr 7.758621e-07 reg 3.025862e+04 train accuracy: 0.350551 val accuracy: 0.351000\n",
      "lr 7.758621e-07 reg 3.224138e+04 train accuracy: 0.346347 val accuracy: 0.331000\n",
      "lr 7.758621e-07 reg 3.422414e+04 train accuracy: 0.350796 val accuracy: 0.344000\n",
      "lr 7.758621e-07 reg 3.620690e+04 train accuracy: 0.349837 val accuracy: 0.353000\n",
      "lr 7.758621e-07 reg 3.818966e+04 train accuracy: 0.343449 val accuracy: 0.332000\n",
      "lr 7.758621e-07 reg 4.017241e+04 train accuracy: 0.353367 val accuracy: 0.339000\n",
      "lr 7.758621e-07 reg 4.215517e+04 train accuracy: 0.351633 val accuracy: 0.339000\n",
      "lr 7.758621e-07 reg 4.413793e+04 train accuracy: 0.353449 val accuracy: 0.346000\n",
      "lr 7.758621e-07 reg 4.612069e+04 train accuracy: 0.348000 val accuracy: 0.356000\n",
      "lr 7.758621e-07 reg 4.810345e+04 train accuracy: 0.349347 val accuracy: 0.347000\n",
      "lr 7.758621e-07 reg 5.008621e+04 train accuracy: 0.346898 val accuracy: 0.347000\n",
      "lr 7.758621e-07 reg 5.206897e+04 train accuracy: 0.348020 val accuracy: 0.355000\n",
      "lr 7.758621e-07 reg 5.405172e+04 train accuracy: 0.350633 val accuracy: 0.333000\n",
      "lr 7.758621e-07 reg 5.603448e+04 train accuracy: 0.352184 val accuracy: 0.360000\n",
      "lr 7.758621e-07 reg 5.801724e+04 train accuracy: 0.351122 val accuracy: 0.348000\n",
      "lr 7.758621e-07 reg 6.000000e+04 train accuracy: 0.351082 val accuracy: 0.364000\n",
      "lr 9.448276e-07 reg 2.500000e+03 train accuracy: 0.359449 val accuracy: 0.352000\n",
      "lr 9.448276e-07 reg 4.482759e+03 train accuracy: 0.358837 val accuracy: 0.341000\n",
      "lr 9.448276e-07 reg 6.465517e+03 train accuracy: 0.360816 val accuracy: 0.346000\n",
      "lr 9.448276e-07 reg 8.448276e+03 train accuracy: 0.358571 val accuracy: 0.353000\n",
      "lr 9.448276e-07 reg 1.043103e+04 train accuracy: 0.359531 val accuracy: 0.339000\n",
      "lr 9.448276e-07 reg 1.241379e+04 train accuracy: 0.356714 val accuracy: 0.383000\n",
      "lr 9.448276e-07 reg 1.439655e+04 train accuracy: 0.359776 val accuracy: 0.350000\n",
      "lr 9.448276e-07 reg 1.637931e+04 train accuracy: 0.358082 val accuracy: 0.345000\n",
      "lr 9.448276e-07 reg 1.836207e+04 train accuracy: 0.353347 val accuracy: 0.355000\n",
      "lr 9.448276e-07 reg 2.034483e+04 train accuracy: 0.360694 val accuracy: 0.356000\n",
      "lr 9.448276e-07 reg 2.232759e+04 train accuracy: 0.361510 val accuracy: 0.349000\n",
      "lr 9.448276e-07 reg 2.431034e+04 train accuracy: 0.361510 val accuracy: 0.356000\n",
      "lr 9.448276e-07 reg 2.629310e+04 train accuracy: 0.358469 val accuracy: 0.342000\n",
      "lr 9.448276e-07 reg 2.827586e+04 train accuracy: 0.359306 val accuracy: 0.349000\n",
      "lr 9.448276e-07 reg 3.025862e+04 train accuracy: 0.356347 val accuracy: 0.341000\n",
      "lr 9.448276e-07 reg 3.224138e+04 train accuracy: 0.356980 val accuracy: 0.365000\n",
      "lr 9.448276e-07 reg 3.422414e+04 train accuracy: 0.360551 val accuracy: 0.369000\n",
      "lr 9.448276e-07 reg 3.620690e+04 train accuracy: 0.354714 val accuracy: 0.341000\n",
      "lr 9.448276e-07 reg 3.818966e+04 train accuracy: 0.356959 val accuracy: 0.359000\n",
      "lr 9.448276e-07 reg 4.017241e+04 train accuracy: 0.355469 val accuracy: 0.364000\n",
      "lr 9.448276e-07 reg 4.215517e+04 train accuracy: 0.356020 val accuracy: 0.339000\n",
      "lr 9.448276e-07 reg 4.413793e+04 train accuracy: 0.357653 val accuracy: 0.358000\n",
      "lr 9.448276e-07 reg 4.612069e+04 train accuracy: 0.357020 val accuracy: 0.353000\n",
      "lr 9.448276e-07 reg 4.810345e+04 train accuracy: 0.358286 val accuracy: 0.336000\n",
      "lr 9.448276e-07 reg 5.008621e+04 train accuracy: 0.353776 val accuracy: 0.356000\n",
      "lr 9.448276e-07 reg 5.206897e+04 train accuracy: 0.359286 val accuracy: 0.366000\n",
      "lr 9.448276e-07 reg 5.405172e+04 train accuracy: 0.354265 val accuracy: 0.349000\n",
      "lr 9.448276e-07 reg 5.603448e+04 train accuracy: 0.356163 val accuracy: 0.332000\n",
      "lr 9.448276e-07 reg 5.801724e+04 train accuracy: 0.357082 val accuracy: 0.359000\n",
      "lr 9.448276e-07 reg 6.000000e+04 train accuracy: 0.359102 val accuracy: 0.356000\n",
      "lr 1.113793e-06 reg 2.500000e+03 train accuracy: 0.362143 val accuracy: 0.348000\n",
      "lr 1.113793e-06 reg 4.482759e+03 train accuracy: 0.363571 val accuracy: 0.368000\n",
      "lr 1.113793e-06 reg 6.465517e+03 train accuracy: 0.363776 val accuracy: 0.334000\n",
      "lr 1.113793e-06 reg 8.448276e+03 train accuracy: 0.365102 val accuracy: 0.348000\n",
      "lr 1.113793e-06 reg 1.043103e+04 train accuracy: 0.367143 val accuracy: 0.357000\n",
      "lr 1.113793e-06 reg 1.241379e+04 train accuracy: 0.367061 val accuracy: 0.348000\n",
      "lr 1.113793e-06 reg 1.439655e+04 train accuracy: 0.365571 val accuracy: 0.350000\n",
      "lr 1.113793e-06 reg 1.637931e+04 train accuracy: 0.360571 val accuracy: 0.341000\n",
      "lr 1.113793e-06 reg 1.836207e+04 train accuracy: 0.367286 val accuracy: 0.347000\n",
      "lr 1.113793e-06 reg 2.034483e+04 train accuracy: 0.363184 val accuracy: 0.338000\n",
      "lr 1.113793e-06 reg 2.232759e+04 train accuracy: 0.362061 val accuracy: 0.365000\n",
      "lr 1.113793e-06 reg 2.431034e+04 train accuracy: 0.368633 val accuracy: 0.364000\n",
      "lr 1.113793e-06 reg 2.629310e+04 train accuracy: 0.364857 val accuracy: 0.375000\n",
      "lr 1.113793e-06 reg 2.827586e+04 train accuracy: 0.364939 val accuracy: 0.339000\n",
      "lr 1.113793e-06 reg 3.025862e+04 train accuracy: 0.367408 val accuracy: 0.354000\n",
      "lr 1.113793e-06 reg 3.224138e+04 train accuracy: 0.362980 val accuracy: 0.338000\n",
      "lr 1.113793e-06 reg 3.422414e+04 train accuracy: 0.363980 val accuracy: 0.360000\n",
      "lr 1.113793e-06 reg 3.620690e+04 train accuracy: 0.362286 val accuracy: 0.375000\n",
      "lr 1.113793e-06 reg 3.818966e+04 train accuracy: 0.360041 val accuracy: 0.356000\n",
      "lr 1.113793e-06 reg 4.017241e+04 train accuracy: 0.365653 val accuracy: 0.372000\n",
      "lr 1.113793e-06 reg 4.215517e+04 train accuracy: 0.365102 val accuracy: 0.339000\n",
      "lr 1.113793e-06 reg 4.413793e+04 train accuracy: 0.361694 val accuracy: 0.337000\n",
      "lr 1.113793e-06 reg 4.612069e+04 train accuracy: 0.366755 val accuracy: 0.338000\n",
      "lr 1.113793e-06 reg 4.810345e+04 train accuracy: 0.361878 val accuracy: 0.346000\n",
      "lr 1.113793e-06 reg 5.008621e+04 train accuracy: 0.364286 val accuracy: 0.346000\n",
      "lr 1.113793e-06 reg 5.206897e+04 train accuracy: 0.362857 val accuracy: 0.368000\n",
      "lr 1.113793e-06 reg 5.405172e+04 train accuracy: 0.361694 val accuracy: 0.346000\n",
      "lr 1.113793e-06 reg 5.603448e+04 train accuracy: 0.366857 val accuracy: 0.357000\n",
      "lr 1.113793e-06 reg 5.801724e+04 train accuracy: 0.364245 val accuracy: 0.372000\n",
      "lr 1.113793e-06 reg 6.000000e+04 train accuracy: 0.367592 val accuracy: 0.349000\n",
      "lr 1.282759e-06 reg 2.500000e+03 train accuracy: 0.369469 val accuracy: 0.345000\n",
      "lr 1.282759e-06 reg 4.482759e+03 train accuracy: 0.372531 val accuracy: 0.377000\n",
      "lr 1.282759e-06 reg 6.465517e+03 train accuracy: 0.371449 val accuracy: 0.370000\n",
      "lr 1.282759e-06 reg 8.448276e+03 train accuracy: 0.370490 val accuracy: 0.365000\n",
      "lr 1.282759e-06 reg 1.043103e+04 train accuracy: 0.368653 val accuracy: 0.362000\n",
      "lr 1.282759e-06 reg 1.241379e+04 train accuracy: 0.370143 val accuracy: 0.362000\n",
      "lr 1.282759e-06 reg 1.439655e+04 train accuracy: 0.369878 val accuracy: 0.366000\n",
      "lr 1.282759e-06 reg 1.637931e+04 train accuracy: 0.370408 val accuracy: 0.351000\n",
      "lr 1.282759e-06 reg 1.836207e+04 train accuracy: 0.363816 val accuracy: 0.365000\n",
      "lr 1.282759e-06 reg 2.034483e+04 train accuracy: 0.367265 val accuracy: 0.346000\n",
      "lr 1.282759e-06 reg 2.232759e+04 train accuracy: 0.373878 val accuracy: 0.346000\n",
      "lr 1.282759e-06 reg 2.431034e+04 train accuracy: 0.372347 val accuracy: 0.354000\n",
      "lr 1.282759e-06 reg 2.629310e+04 train accuracy: 0.374184 val accuracy: 0.358000\n",
      "lr 1.282759e-06 reg 2.827586e+04 train accuracy: 0.371878 val accuracy: 0.358000\n",
      "lr 1.282759e-06 reg 3.025862e+04 train accuracy: 0.368735 val accuracy: 0.377000\n",
      "lr 1.282759e-06 reg 3.224138e+04 train accuracy: 0.373041 val accuracy: 0.360000\n",
      "lr 1.282759e-06 reg 3.422414e+04 train accuracy: 0.368469 val accuracy: 0.357000\n",
      "lr 1.282759e-06 reg 3.620690e+04 train accuracy: 0.371490 val accuracy: 0.358000\n",
      "lr 1.282759e-06 reg 3.818966e+04 train accuracy: 0.368694 val accuracy: 0.361000\n",
      "lr 1.282759e-06 reg 4.017241e+04 train accuracy: 0.368796 val accuracy: 0.363000\n",
      "lr 1.282759e-06 reg 4.215517e+04 train accuracy: 0.372776 val accuracy: 0.356000\n",
      "lr 1.282759e-06 reg 4.413793e+04 train accuracy: 0.372571 val accuracy: 0.358000\n",
      "lr 1.282759e-06 reg 4.612069e+04 train accuracy: 0.370918 val accuracy: 0.346000\n",
      "lr 1.282759e-06 reg 4.810345e+04 train accuracy: 0.373102 val accuracy: 0.348000\n",
      "lr 1.282759e-06 reg 5.008621e+04 train accuracy: 0.368061 val accuracy: 0.371000\n",
      "lr 1.282759e-06 reg 5.206897e+04 train accuracy: 0.365918 val accuracy: 0.347000\n",
      "lr 1.282759e-06 reg 5.405172e+04 train accuracy: 0.366551 val accuracy: 0.357000\n",
      "lr 1.282759e-06 reg 5.603448e+04 train accuracy: 0.369000 val accuracy: 0.345000\n",
      "lr 1.282759e-06 reg 5.801724e+04 train accuracy: 0.368000 val accuracy: 0.358000\n",
      "lr 1.282759e-06 reg 6.000000e+04 train accuracy: 0.370367 val accuracy: 0.352000\n",
      "lr 1.451724e-06 reg 2.500000e+03 train accuracy: 0.369796 val accuracy: 0.347000\n",
      "lr 1.451724e-06 reg 4.482759e+03 train accuracy: 0.373367 val accuracy: 0.362000\n",
      "lr 1.451724e-06 reg 6.465517e+03 train accuracy: 0.376959 val accuracy: 0.367000\n",
      "lr 1.451724e-06 reg 8.448276e+03 train accuracy: 0.373755 val accuracy: 0.368000\n",
      "lr 1.451724e-06 reg 1.043103e+04 train accuracy: 0.374327 val accuracy: 0.349000\n",
      "lr 1.451724e-06 reg 1.241379e+04 train accuracy: 0.374388 val accuracy: 0.381000\n",
      "lr 1.451724e-06 reg 1.439655e+04 train accuracy: 0.376265 val accuracy: 0.358000\n",
      "lr 1.451724e-06 reg 1.637931e+04 train accuracy: 0.377061 val accuracy: 0.356000\n",
      "lr 1.451724e-06 reg 1.836207e+04 train accuracy: 0.376143 val accuracy: 0.372000\n",
      "lr 1.451724e-06 reg 2.034483e+04 train accuracy: 0.376816 val accuracy: 0.353000\n",
      "lr 1.451724e-06 reg 2.232759e+04 train accuracy: 0.374857 val accuracy: 0.360000\n",
      "lr 1.451724e-06 reg 2.431034e+04 train accuracy: 0.376449 val accuracy: 0.351000\n",
      "lr 1.451724e-06 reg 2.629310e+04 train accuracy: 0.375592 val accuracy: 0.343000\n",
      "lr 1.451724e-06 reg 2.827586e+04 train accuracy: 0.368551 val accuracy: 0.376000\n",
      "lr 1.451724e-06 reg 3.025862e+04 train accuracy: 0.373898 val accuracy: 0.365000\n",
      "lr 1.451724e-06 reg 3.224138e+04 train accuracy: 0.372653 val accuracy: 0.373000\n",
      "lr 1.451724e-06 reg 3.422414e+04 train accuracy: 0.371510 val accuracy: 0.365000\n",
      "lr 1.451724e-06 reg 3.620690e+04 train accuracy: 0.366571 val accuracy: 0.364000\n",
      "lr 1.451724e-06 reg 3.818966e+04 train accuracy: 0.372735 val accuracy: 0.359000\n",
      "lr 1.451724e-06 reg 4.017241e+04 train accuracy: 0.370592 val accuracy: 0.350000\n",
      "lr 1.451724e-06 reg 4.215517e+04 train accuracy: 0.375265 val accuracy: 0.377000\n",
      "lr 1.451724e-06 reg 4.413793e+04 train accuracy: 0.371163 val accuracy: 0.333000\n",
      "lr 1.451724e-06 reg 4.612069e+04 train accuracy: 0.372163 val accuracy: 0.377000\n",
      "lr 1.451724e-06 reg 4.810345e+04 train accuracy: 0.375980 val accuracy: 0.341000\n",
      "lr 1.451724e-06 reg 5.008621e+04 train accuracy: 0.373673 val accuracy: 0.364000\n",
      "lr 1.451724e-06 reg 5.206897e+04 train accuracy: 0.371041 val accuracy: 0.358000\n",
      "lr 1.451724e-06 reg 5.405172e+04 train accuracy: 0.375898 val accuracy: 0.365000\n",
      "lr 1.451724e-06 reg 5.603448e+04 train accuracy: 0.372347 val accuracy: 0.369000\n",
      "lr 1.451724e-06 reg 5.801724e+04 train accuracy: 0.375735 val accuracy: 0.346000\n",
      "lr 1.451724e-06 reg 6.000000e+04 train accuracy: 0.376122 val accuracy: 0.368000\n",
      "lr 1.620690e-06 reg 2.500000e+03 train accuracy: 0.377224 val accuracy: 0.359000\n",
      "lr 1.620690e-06 reg 4.482759e+03 train accuracy: 0.372653 val accuracy: 0.365000\n",
      "lr 1.620690e-06 reg 6.465517e+03 train accuracy: 0.380265 val accuracy: 0.363000\n",
      "lr 1.620690e-06 reg 8.448276e+03 train accuracy: 0.375755 val accuracy: 0.350000\n",
      "lr 1.620690e-06 reg 1.043103e+04 train accuracy: 0.376388 val accuracy: 0.384000\n",
      "lr 1.620690e-06 reg 1.241379e+04 train accuracy: 0.376612 val accuracy: 0.346000\n",
      "lr 1.620690e-06 reg 1.439655e+04 train accuracy: 0.378000 val accuracy: 0.368000\n",
      "lr 1.620690e-06 reg 1.637931e+04 train accuracy: 0.382245 val accuracy: 0.377000\n",
      "lr 1.620690e-06 reg 1.836207e+04 train accuracy: 0.376735 val accuracy: 0.377000\n",
      "lr 1.620690e-06 reg 2.034483e+04 train accuracy: 0.381694 val accuracy: 0.368000\n",
      "lr 1.620690e-06 reg 2.232759e+04 train accuracy: 0.380306 val accuracy: 0.365000\n",
      "lr 1.620690e-06 reg 2.431034e+04 train accuracy: 0.376592 val accuracy: 0.354000\n",
      "lr 1.620690e-06 reg 2.629310e+04 train accuracy: 0.379306 val accuracy: 0.358000\n",
      "lr 1.620690e-06 reg 2.827586e+04 train accuracy: 0.377347 val accuracy: 0.380000\n",
      "lr 1.620690e-06 reg 3.025862e+04 train accuracy: 0.378510 val accuracy: 0.369000\n",
      "lr 1.620690e-06 reg 3.224138e+04 train accuracy: 0.376592 val accuracy: 0.377000\n",
      "lr 1.620690e-06 reg 3.422414e+04 train accuracy: 0.381367 val accuracy: 0.341000\n",
      "lr 1.620690e-06 reg 3.620690e+04 train accuracy: 0.385306 val accuracy: 0.361000\n",
      "lr 1.620690e-06 reg 3.818966e+04 train accuracy: 0.374102 val accuracy: 0.359000\n",
      "lr 1.620690e-06 reg 4.017241e+04 train accuracy: 0.373571 val accuracy: 0.363000\n",
      "lr 1.620690e-06 reg 4.215517e+04 train accuracy: 0.376510 val accuracy: 0.361000\n",
      "lr 1.620690e-06 reg 4.413793e+04 train accuracy: 0.383429 val accuracy: 0.396000\n",
      "lr 1.620690e-06 reg 4.612069e+04 train accuracy: 0.377939 val accuracy: 0.348000\n",
      "lr 1.620690e-06 reg 4.810345e+04 train accuracy: 0.381755 val accuracy: 0.365000\n",
      "lr 1.620690e-06 reg 5.008621e+04 train accuracy: 0.376816 val accuracy: 0.378000\n",
      "lr 1.620690e-06 reg 5.206897e+04 train accuracy: 0.378306 val accuracy: 0.364000\n",
      "lr 1.620690e-06 reg 5.405172e+04 train accuracy: 0.385143 val accuracy: 0.379000\n",
      "lr 1.620690e-06 reg 5.603448e+04 train accuracy: 0.371837 val accuracy: 0.352000\n",
      "lr 1.620690e-06 reg 5.801724e+04 train accuracy: 0.375163 val accuracy: 0.356000\n",
      "lr 1.620690e-06 reg 6.000000e+04 train accuracy: 0.375714 val accuracy: 0.350000\n",
      "lr 1.789655e-06 reg 2.500000e+03 train accuracy: 0.378469 val accuracy: 0.362000\n",
      "lr 1.789655e-06 reg 4.482759e+03 train accuracy: 0.379204 val accuracy: 0.367000\n",
      "lr 1.789655e-06 reg 6.465517e+03 train accuracy: 0.381000 val accuracy: 0.363000\n",
      "lr 1.789655e-06 reg 8.448276e+03 train accuracy: 0.384102 val accuracy: 0.363000\n",
      "lr 1.789655e-06 reg 1.043103e+04 train accuracy: 0.385939 val accuracy: 0.365000\n",
      "lr 1.789655e-06 reg 1.241379e+04 train accuracy: 0.377408 val accuracy: 0.355000\n",
      "lr 1.789655e-06 reg 1.439655e+04 train accuracy: 0.383837 val accuracy: 0.366000\n",
      "lr 1.789655e-06 reg 1.637931e+04 train accuracy: 0.378694 val accuracy: 0.356000\n",
      "lr 1.789655e-06 reg 1.836207e+04 train accuracy: 0.377735 val accuracy: 0.367000\n",
      "lr 1.789655e-06 reg 2.034483e+04 train accuracy: 0.382694 val accuracy: 0.359000\n",
      "lr 1.789655e-06 reg 2.232759e+04 train accuracy: 0.382837 val accuracy: 0.382000\n",
      "lr 1.789655e-06 reg 2.431034e+04 train accuracy: 0.381571 val accuracy: 0.373000\n",
      "lr 1.789655e-06 reg 2.629310e+04 train accuracy: 0.382143 val accuracy: 0.381000\n",
      "lr 1.789655e-06 reg 2.827586e+04 train accuracy: 0.383122 val accuracy: 0.375000\n",
      "lr 1.789655e-06 reg 3.025862e+04 train accuracy: 0.381306 val accuracy: 0.373000\n",
      "lr 1.789655e-06 reg 3.224138e+04 train accuracy: 0.372612 val accuracy: 0.375000\n",
      "lr 1.789655e-06 reg 3.422414e+04 train accuracy: 0.384612 val accuracy: 0.351000\n",
      "lr 1.789655e-06 reg 3.620690e+04 train accuracy: 0.380959 val accuracy: 0.376000\n",
      "lr 1.789655e-06 reg 3.818966e+04 train accuracy: 0.384327 val accuracy: 0.370000\n",
      "lr 1.789655e-06 reg 4.017241e+04 train accuracy: 0.386918 val accuracy: 0.363000\n",
      "lr 1.789655e-06 reg 4.215517e+04 train accuracy: 0.377837 val accuracy: 0.369000\n",
      "lr 1.789655e-06 reg 4.413793e+04 train accuracy: 0.388204 val accuracy: 0.371000\n",
      "lr 1.789655e-06 reg 4.612069e+04 train accuracy: 0.384531 val accuracy: 0.364000\n",
      "lr 1.789655e-06 reg 4.810345e+04 train accuracy: 0.377918 val accuracy: 0.375000\n",
      "lr 1.789655e-06 reg 5.008621e+04 train accuracy: 0.377306 val accuracy: 0.367000\n",
      "lr 1.789655e-06 reg 5.206897e+04 train accuracy: 0.381408 val accuracy: 0.364000\n",
      "lr 1.789655e-06 reg 5.405172e+04 train accuracy: 0.377408 val accuracy: 0.374000\n",
      "lr 1.789655e-06 reg 5.603448e+04 train accuracy: 0.381796 val accuracy: 0.368000\n",
      "lr 1.789655e-06 reg 5.801724e+04 train accuracy: 0.380204 val accuracy: 0.343000\n",
      "lr 1.789655e-06 reg 6.000000e+04 train accuracy: 0.382878 val accuracy: 0.363000\n",
      "lr 1.958621e-06 reg 2.500000e+03 train accuracy: 0.387367 val accuracy: 0.392000\n",
      "lr 1.958621e-06 reg 4.482759e+03 train accuracy: 0.384510 val accuracy: 0.354000\n",
      "lr 1.958621e-06 reg 6.465517e+03 train accuracy: 0.388510 val accuracy: 0.373000\n",
      "lr 1.958621e-06 reg 8.448276e+03 train accuracy: 0.389245 val accuracy: 0.358000\n",
      "lr 1.958621e-06 reg 1.043103e+04 train accuracy: 0.390612 val accuracy: 0.347000\n",
      "lr 1.958621e-06 reg 1.241379e+04 train accuracy: 0.388000 val accuracy: 0.392000\n",
      "lr 1.958621e-06 reg 1.439655e+04 train accuracy: 0.387102 val accuracy: 0.368000\n",
      "lr 1.958621e-06 reg 1.637931e+04 train accuracy: 0.387204 val accuracy: 0.362000\n",
      "lr 1.958621e-06 reg 1.836207e+04 train accuracy: 0.388408 val accuracy: 0.367000\n",
      "lr 1.958621e-06 reg 2.034483e+04 train accuracy: 0.384592 val accuracy: 0.383000\n",
      "lr 1.958621e-06 reg 2.232759e+04 train accuracy: 0.385878 val accuracy: 0.362000\n",
      "lr 1.958621e-06 reg 2.431034e+04 train accuracy: 0.389796 val accuracy: 0.365000\n",
      "lr 1.958621e-06 reg 2.629310e+04 train accuracy: 0.383143 val accuracy: 0.370000\n",
      "lr 1.958621e-06 reg 2.827586e+04 train accuracy: 0.384510 val accuracy: 0.373000\n",
      "lr 1.958621e-06 reg 3.025862e+04 train accuracy: 0.386959 val accuracy: 0.367000\n",
      "lr 1.958621e-06 reg 3.224138e+04 train accuracy: 0.386224 val accuracy: 0.368000\n",
      "lr 1.958621e-06 reg 3.422414e+04 train accuracy: 0.381286 val accuracy: 0.360000\n",
      "lr 1.958621e-06 reg 3.620690e+04 train accuracy: 0.382612 val accuracy: 0.368000\n",
      "lr 1.958621e-06 reg 3.818966e+04 train accuracy: 0.384245 val accuracy: 0.382000\n",
      "lr 1.958621e-06 reg 4.017241e+04 train accuracy: 0.388020 val accuracy: 0.359000\n",
      "lr 1.958621e-06 reg 4.215517e+04 train accuracy: 0.383265 val accuracy: 0.365000\n",
      "lr 1.958621e-06 reg 4.413793e+04 train accuracy: 0.385245 val accuracy: 0.355000\n",
      "lr 1.958621e-06 reg 4.612069e+04 train accuracy: 0.387000 val accuracy: 0.376000\n",
      "lr 1.958621e-06 reg 4.810345e+04 train accuracy: 0.382918 val accuracy: 0.365000\n",
      "lr 1.958621e-06 reg 5.008621e+04 train accuracy: 0.384449 val accuracy: 0.373000\n",
      "lr 1.958621e-06 reg 5.206897e+04 train accuracy: 0.382837 val accuracy: 0.374000\n",
      "lr 1.958621e-06 reg 5.405172e+04 train accuracy: 0.389122 val accuracy: 0.378000\n",
      "lr 1.958621e-06 reg 5.603448e+04 train accuracy: 0.389612 val accuracy: 0.367000\n",
      "lr 1.958621e-06 reg 5.801724e+04 train accuracy: 0.383673 val accuracy: 0.360000\n",
      "lr 1.958621e-06 reg 6.000000e+04 train accuracy: 0.385592 val accuracy: 0.373000\n",
      "lr 2.127586e-06 reg 2.500000e+03 train accuracy: 0.390776 val accuracy: 0.366000\n",
      "lr 2.127586e-06 reg 4.482759e+03 train accuracy: 0.391592 val accuracy: 0.358000\n",
      "lr 2.127586e-06 reg 6.465517e+03 train accuracy: 0.386612 val accuracy: 0.375000\n",
      "lr 2.127586e-06 reg 8.448276e+03 train accuracy: 0.385041 val accuracy: 0.367000\n",
      "lr 2.127586e-06 reg 1.043103e+04 train accuracy: 0.385796 val accuracy: 0.367000\n",
      "lr 2.127586e-06 reg 1.241379e+04 train accuracy: 0.388204 val accuracy: 0.366000\n",
      "lr 2.127586e-06 reg 1.439655e+04 train accuracy: 0.387449 val accuracy: 0.368000\n",
      "lr 2.127586e-06 reg 1.637931e+04 train accuracy: 0.388408 val accuracy: 0.375000\n",
      "lr 2.127586e-06 reg 1.836207e+04 train accuracy: 0.390776 val accuracy: 0.368000\n",
      "lr 2.127586e-06 reg 2.034483e+04 train accuracy: 0.387408 val accuracy: 0.371000\n",
      "lr 2.127586e-06 reg 2.232759e+04 train accuracy: 0.388204 val accuracy: 0.356000\n",
      "lr 2.127586e-06 reg 2.431034e+04 train accuracy: 0.386653 val accuracy: 0.370000\n",
      "lr 2.127586e-06 reg 2.629310e+04 train accuracy: 0.389796 val accuracy: 0.352000\n",
      "lr 2.127586e-06 reg 2.827586e+04 train accuracy: 0.386020 val accuracy: 0.379000\n",
      "lr 2.127586e-06 reg 3.025862e+04 train accuracy: 0.389388 val accuracy: 0.376000\n",
      "lr 2.127586e-06 reg 3.224138e+04 train accuracy: 0.390653 val accuracy: 0.371000\n",
      "lr 2.127586e-06 reg 3.422414e+04 train accuracy: 0.386612 val accuracy: 0.377000\n",
      "lr 2.127586e-06 reg 3.620690e+04 train accuracy: 0.392959 val accuracy: 0.380000\n",
      "lr 2.127586e-06 reg 3.818966e+04 train accuracy: 0.389449 val accuracy: 0.359000\n",
      "lr 2.127586e-06 reg 4.017241e+04 train accuracy: 0.386061 val accuracy: 0.367000\n",
      "lr 2.127586e-06 reg 4.215517e+04 train accuracy: 0.389327 val accuracy: 0.353000\n",
      "lr 2.127586e-06 reg 4.413793e+04 train accuracy: 0.387143 val accuracy: 0.368000\n",
      "lr 2.127586e-06 reg 4.612069e+04 train accuracy: 0.385510 val accuracy: 0.372000\n",
      "lr 2.127586e-06 reg 4.810345e+04 train accuracy: 0.386653 val accuracy: 0.364000\n",
      "lr 2.127586e-06 reg 5.008621e+04 train accuracy: 0.386837 val accuracy: 0.358000\n",
      "lr 2.127586e-06 reg 5.206897e+04 train accuracy: 0.385388 val accuracy: 0.355000\n",
      "lr 2.127586e-06 reg 5.405172e+04 train accuracy: 0.392000 val accuracy: 0.388000\n",
      "lr 2.127586e-06 reg 5.603448e+04 train accuracy: 0.387367 val accuracy: 0.358000\n",
      "lr 2.127586e-06 reg 5.801724e+04 train accuracy: 0.386898 val accuracy: 0.379000\n",
      "lr 2.127586e-06 reg 6.000000e+04 train accuracy: 0.387429 val accuracy: 0.362000\n",
      "lr 2.296552e-06 reg 2.500000e+03 train accuracy: 0.390000 val accuracy: 0.371000\n",
      "lr 2.296552e-06 reg 4.482759e+03 train accuracy: 0.388184 val accuracy: 0.349000\n",
      "lr 2.296552e-06 reg 6.465517e+03 train accuracy: 0.391776 val accuracy: 0.372000\n",
      "lr 2.296552e-06 reg 8.448276e+03 train accuracy: 0.389673 val accuracy: 0.376000\n",
      "lr 2.296552e-06 reg 1.043103e+04 train accuracy: 0.385163 val accuracy: 0.374000\n",
      "lr 2.296552e-06 reg 1.241379e+04 train accuracy: 0.389388 val accuracy: 0.396000\n",
      "lr 2.296552e-06 reg 1.439655e+04 train accuracy: 0.389184 val accuracy: 0.362000\n",
      "lr 2.296552e-06 reg 1.637931e+04 train accuracy: 0.392551 val accuracy: 0.385000\n",
      "lr 2.296552e-06 reg 1.836207e+04 train accuracy: 0.382673 val accuracy: 0.359000\n",
      "lr 2.296552e-06 reg 2.034483e+04 train accuracy: 0.382612 val accuracy: 0.375000\n",
      "lr 2.296552e-06 reg 2.232759e+04 train accuracy: 0.382612 val accuracy: 0.378000\n",
      "lr 2.296552e-06 reg 2.431034e+04 train accuracy: 0.393755 val accuracy: 0.360000\n",
      "lr 2.296552e-06 reg 2.629310e+04 train accuracy: 0.388959 val accuracy: 0.365000\n",
      "lr 2.296552e-06 reg 2.827586e+04 train accuracy: 0.389531 val accuracy: 0.374000\n",
      "lr 2.296552e-06 reg 3.025862e+04 train accuracy: 0.391776 val accuracy: 0.388000\n",
      "lr 2.296552e-06 reg 3.224138e+04 train accuracy: 0.391796 val accuracy: 0.379000\n",
      "lr 2.296552e-06 reg 3.422414e+04 train accuracy: 0.395061 val accuracy: 0.370000\n",
      "lr 2.296552e-06 reg 3.620690e+04 train accuracy: 0.391061 val accuracy: 0.372000\n",
      "lr 2.296552e-06 reg 3.818966e+04 train accuracy: 0.387918 val accuracy: 0.379000\n",
      "lr 2.296552e-06 reg 4.017241e+04 train accuracy: 0.393102 val accuracy: 0.354000\n",
      "lr 2.296552e-06 reg 4.215517e+04 train accuracy: 0.388327 val accuracy: 0.366000\n",
      "lr 2.296552e-06 reg 4.413793e+04 train accuracy: 0.392143 val accuracy: 0.357000\n",
      "lr 2.296552e-06 reg 4.612069e+04 train accuracy: 0.390510 val accuracy: 0.356000\n",
      "lr 2.296552e-06 reg 4.810345e+04 train accuracy: 0.388571 val accuracy: 0.350000\n",
      "lr 2.296552e-06 reg 5.008621e+04 train accuracy: 0.388939 val accuracy: 0.376000\n",
      "lr 2.296552e-06 reg 5.206897e+04 train accuracy: 0.391857 val accuracy: 0.362000\n",
      "lr 2.296552e-06 reg 5.405172e+04 train accuracy: 0.388571 val accuracy: 0.358000\n",
      "lr 2.296552e-06 reg 5.603448e+04 train accuracy: 0.389673 val accuracy: 0.365000\n",
      "lr 2.296552e-06 reg 5.801724e+04 train accuracy: 0.390143 val accuracy: 0.365000\n",
      "lr 2.296552e-06 reg 6.000000e+04 train accuracy: 0.391367 val accuracy: 0.387000\n",
      "lr 2.465517e-06 reg 2.500000e+03 train accuracy: 0.389082 val accuracy: 0.380000\n",
      "lr 2.465517e-06 reg 4.482759e+03 train accuracy: 0.385531 val accuracy: 0.361000\n",
      "lr 2.465517e-06 reg 6.465517e+03 train accuracy: 0.382327 val accuracy: 0.368000\n",
      "lr 2.465517e-06 reg 8.448276e+03 train accuracy: 0.393694 val accuracy: 0.351000\n",
      "lr 2.465517e-06 reg 1.043103e+04 train accuracy: 0.395531 val accuracy: 0.379000\n",
      "lr 2.465517e-06 reg 1.241379e+04 train accuracy: 0.392449 val accuracy: 0.351000\n",
      "lr 2.465517e-06 reg 1.439655e+04 train accuracy: 0.388000 val accuracy: 0.375000\n",
      "lr 2.465517e-06 reg 1.637931e+04 train accuracy: 0.380204 val accuracy: 0.335000\n",
      "lr 2.465517e-06 reg 1.836207e+04 train accuracy: 0.389857 val accuracy: 0.373000\n",
      "lr 2.465517e-06 reg 2.034483e+04 train accuracy: 0.384959 val accuracy: 0.366000\n",
      "lr 2.465517e-06 reg 2.232759e+04 train accuracy: 0.385347 val accuracy: 0.364000\n",
      "lr 2.465517e-06 reg 2.431034e+04 train accuracy: 0.390592 val accuracy: 0.365000\n",
      "lr 2.465517e-06 reg 2.629310e+04 train accuracy: 0.390633 val accuracy: 0.360000\n",
      "lr 2.465517e-06 reg 2.827586e+04 train accuracy: 0.389163 val accuracy: 0.370000\n",
      "lr 2.465517e-06 reg 3.025862e+04 train accuracy: 0.396653 val accuracy: 0.388000\n",
      "lr 2.465517e-06 reg 3.224138e+04 train accuracy: 0.389673 val accuracy: 0.380000\n",
      "lr 2.465517e-06 reg 3.422414e+04 train accuracy: 0.391449 val accuracy: 0.365000\n",
      "lr 2.465517e-06 reg 3.620690e+04 train accuracy: 0.393143 val accuracy: 0.371000\n",
      "lr 2.465517e-06 reg 3.818966e+04 train accuracy: 0.390224 val accuracy: 0.371000\n",
      "lr 2.465517e-06 reg 4.017241e+04 train accuracy: 0.385735 val accuracy: 0.363000\n",
      "lr 2.465517e-06 reg 4.215517e+04 train accuracy: 0.387776 val accuracy: 0.369000\n",
      "lr 2.465517e-06 reg 4.413793e+04 train accuracy: 0.386429 val accuracy: 0.362000\n",
      "lr 2.465517e-06 reg 4.612069e+04 train accuracy: 0.391143 val accuracy: 0.378000\n",
      "lr 2.465517e-06 reg 4.810345e+04 train accuracy: 0.392592 val accuracy: 0.380000\n",
      "lr 2.465517e-06 reg 5.008621e+04 train accuracy: 0.392571 val accuracy: 0.388000\n",
      "lr 2.465517e-06 reg 5.206897e+04 train accuracy: 0.391469 val accuracy: 0.346000\n",
      "lr 2.465517e-06 reg 5.405172e+04 train accuracy: 0.393020 val accuracy: 0.357000\n",
      "lr 2.465517e-06 reg 5.603448e+04 train accuracy: 0.388673 val accuracy: 0.356000\n",
      "lr 2.465517e-06 reg 5.801724e+04 train accuracy: 0.391510 val accuracy: 0.374000\n",
      "lr 2.465517e-06 reg 6.000000e+04 train accuracy: 0.396122 val accuracy: 0.364000\n",
      "lr 2.634483e-06 reg 2.500000e+03 train accuracy: 0.394184 val accuracy: 0.365000\n",
      "lr 2.634483e-06 reg 4.482759e+03 train accuracy: 0.394347 val accuracy: 0.370000\n",
      "lr 2.634483e-06 reg 6.465517e+03 train accuracy: 0.395163 val accuracy: 0.367000\n",
      "lr 2.634483e-06 reg 8.448276e+03 train accuracy: 0.395184 val accuracy: 0.387000\n",
      "lr 2.634483e-06 reg 1.043103e+04 train accuracy: 0.394122 val accuracy: 0.366000\n",
      "lr 2.634483e-06 reg 1.241379e+04 train accuracy: 0.397653 val accuracy: 0.379000\n",
      "lr 2.634483e-06 reg 1.439655e+04 train accuracy: 0.389204 val accuracy: 0.369000\n",
      "lr 2.634483e-06 reg 1.637931e+04 train accuracy: 0.394367 val accuracy: 0.392000\n",
      "lr 2.634483e-06 reg 1.836207e+04 train accuracy: 0.396020 val accuracy: 0.377000\n",
      "lr 2.634483e-06 reg 2.034483e+04 train accuracy: 0.390959 val accuracy: 0.385000\n",
      "lr 2.634483e-06 reg 2.232759e+04 train accuracy: 0.390551 val accuracy: 0.351000\n",
      "lr 2.634483e-06 reg 2.431034e+04 train accuracy: 0.397612 val accuracy: 0.387000\n",
      "lr 2.634483e-06 reg 2.629310e+04 train accuracy: 0.396041 val accuracy: 0.361000\n",
      "lr 2.634483e-06 reg 2.827586e+04 train accuracy: 0.393061 val accuracy: 0.364000\n",
      "lr 2.634483e-06 reg 3.025862e+04 train accuracy: 0.380714 val accuracy: 0.352000\n",
      "lr 2.634483e-06 reg 3.224138e+04 train accuracy: 0.388388 val accuracy: 0.368000\n",
      "lr 2.634483e-06 reg 3.422414e+04 train accuracy: 0.391551 val accuracy: 0.383000\n",
      "lr 2.634483e-06 reg 3.620690e+04 train accuracy: 0.398735 val accuracy: 0.381000\n",
      "lr 2.634483e-06 reg 3.818966e+04 train accuracy: 0.386122 val accuracy: 0.365000\n",
      "lr 2.634483e-06 reg 4.017241e+04 train accuracy: 0.390265 val accuracy: 0.369000\n",
      "lr 2.634483e-06 reg 4.215517e+04 train accuracy: 0.397122 val accuracy: 0.377000\n",
      "lr 2.634483e-06 reg 4.413793e+04 train accuracy: 0.395327 val accuracy: 0.362000\n",
      "lr 2.634483e-06 reg 4.612069e+04 train accuracy: 0.392429 val accuracy: 0.359000\n",
      "lr 2.634483e-06 reg 4.810345e+04 train accuracy: 0.383592 val accuracy: 0.353000\n",
      "lr 2.634483e-06 reg 5.008621e+04 train accuracy: 0.396939 val accuracy: 0.364000\n",
      "lr 2.634483e-06 reg 5.206897e+04 train accuracy: 0.388612 val accuracy: 0.360000\n",
      "lr 2.634483e-06 reg 5.405172e+04 train accuracy: 0.397204 val accuracy: 0.375000\n",
      "lr 2.634483e-06 reg 5.603448e+04 train accuracy: 0.391122 val accuracy: 0.371000\n",
      "lr 2.634483e-06 reg 5.801724e+04 train accuracy: 0.390551 val accuracy: 0.371000\n",
      "lr 2.634483e-06 reg 6.000000e+04 train accuracy: 0.382551 val accuracy: 0.364000\n",
      "lr 2.803448e-06 reg 2.500000e+03 train accuracy: 0.385980 val accuracy: 0.372000\n",
      "lr 2.803448e-06 reg 4.482759e+03 train accuracy: 0.395837 val accuracy: 0.368000\n",
      "lr 2.803448e-06 reg 6.465517e+03 train accuracy: 0.395469 val accuracy: 0.373000\n",
      "lr 2.803448e-06 reg 8.448276e+03 train accuracy: 0.391816 val accuracy: 0.372000\n",
      "lr 2.803448e-06 reg 1.043103e+04 train accuracy: 0.383204 val accuracy: 0.375000\n",
      "lr 2.803448e-06 reg 1.241379e+04 train accuracy: 0.393041 val accuracy: 0.367000\n",
      "lr 2.803448e-06 reg 1.439655e+04 train accuracy: 0.393837 val accuracy: 0.363000\n",
      "lr 2.803448e-06 reg 1.637931e+04 train accuracy: 0.397714 val accuracy: 0.369000\n",
      "lr 2.803448e-06 reg 1.836207e+04 train accuracy: 0.386449 val accuracy: 0.367000\n",
      "lr 2.803448e-06 reg 2.034483e+04 train accuracy: 0.397939 val accuracy: 0.394000\n",
      "lr 2.803448e-06 reg 2.232759e+04 train accuracy: 0.391878 val accuracy: 0.369000\n",
      "lr 2.803448e-06 reg 2.431034e+04 train accuracy: 0.398245 val accuracy: 0.380000\n",
      "lr 2.803448e-06 reg 2.629310e+04 train accuracy: 0.396102 val accuracy: 0.381000\n",
      "lr 2.803448e-06 reg 2.827586e+04 train accuracy: 0.389143 val accuracy: 0.366000\n",
      "lr 2.803448e-06 reg 3.025862e+04 train accuracy: 0.399347 val accuracy: 0.362000\n",
      "lr 2.803448e-06 reg 3.224138e+04 train accuracy: 0.398102 val accuracy: 0.368000\n",
      "lr 2.803448e-06 reg 3.422414e+04 train accuracy: 0.394286 val accuracy: 0.386000\n",
      "lr 2.803448e-06 reg 3.620690e+04 train accuracy: 0.400776 val accuracy: 0.367000\n",
      "lr 2.803448e-06 reg 3.818966e+04 train accuracy: 0.393408 val accuracy: 0.358000\n",
      "lr 2.803448e-06 reg 4.017241e+04 train accuracy: 0.388673 val accuracy: 0.350000\n",
      "lr 2.803448e-06 reg 4.215517e+04 train accuracy: 0.399184 val accuracy: 0.381000\n",
      "lr 2.803448e-06 reg 4.413793e+04 train accuracy: 0.392388 val accuracy: 0.380000\n",
      "lr 2.803448e-06 reg 4.612069e+04 train accuracy: 0.398388 val accuracy: 0.364000\n",
      "lr 2.803448e-06 reg 4.810345e+04 train accuracy: 0.398571 val accuracy: 0.376000\n",
      "lr 2.803448e-06 reg 5.008621e+04 train accuracy: 0.395959 val accuracy: 0.375000\n",
      "lr 2.803448e-06 reg 5.206897e+04 train accuracy: 0.394265 val accuracy: 0.364000\n",
      "lr 2.803448e-06 reg 5.405172e+04 train accuracy: 0.389857 val accuracy: 0.388000\n",
      "lr 2.803448e-06 reg 5.603448e+04 train accuracy: 0.401898 val accuracy: 0.376000\n",
      "lr 2.803448e-06 reg 5.801724e+04 train accuracy: 0.391714 val accuracy: 0.357000\n",
      "lr 2.803448e-06 reg 6.000000e+04 train accuracy: 0.391020 val accuracy: 0.357000\n",
      "lr 2.972414e-06 reg 2.500000e+03 train accuracy: 0.394816 val accuracy: 0.360000\n",
      "lr 2.972414e-06 reg 4.482759e+03 train accuracy: 0.391327 val accuracy: 0.358000\n",
      "lr 2.972414e-06 reg 6.465517e+03 train accuracy: 0.397918 val accuracy: 0.368000\n",
      "lr 2.972414e-06 reg 8.448276e+03 train accuracy: 0.398714 val accuracy: 0.367000\n",
      "lr 2.972414e-06 reg 1.043103e+04 train accuracy: 0.401816 val accuracy: 0.365000\n",
      "lr 2.972414e-06 reg 1.241379e+04 train accuracy: 0.393082 val accuracy: 0.379000\n",
      "lr 2.972414e-06 reg 1.439655e+04 train accuracy: 0.396633 val accuracy: 0.385000\n",
      "lr 2.972414e-06 reg 1.637931e+04 train accuracy: 0.389163 val accuracy: 0.364000\n",
      "lr 2.972414e-06 reg 1.836207e+04 train accuracy: 0.390020 val accuracy: 0.357000\n",
      "lr 2.972414e-06 reg 2.034483e+04 train accuracy: 0.399347 val accuracy: 0.369000\n",
      "lr 2.972414e-06 reg 2.232759e+04 train accuracy: 0.399612 val accuracy: 0.384000\n",
      "lr 2.972414e-06 reg 2.431034e+04 train accuracy: 0.392959 val accuracy: 0.357000\n",
      "lr 2.972414e-06 reg 2.629310e+04 train accuracy: 0.394857 val accuracy: 0.348000\n",
      "lr 2.972414e-06 reg 2.827586e+04 train accuracy: 0.396694 val accuracy: 0.362000\n",
      "lr 2.972414e-06 reg 3.025862e+04 train accuracy: 0.396000 val accuracy: 0.368000\n",
      "lr 2.972414e-06 reg 3.224138e+04 train accuracy: 0.397531 val accuracy: 0.377000\n",
      "lr 2.972414e-06 reg 3.422414e+04 train accuracy: 0.399041 val accuracy: 0.381000\n",
      "lr 2.972414e-06 reg 3.620690e+04 train accuracy: 0.397980 val accuracy: 0.373000\n",
      "lr 2.972414e-06 reg 3.818966e+04 train accuracy: 0.402469 val accuracy: 0.376000\n",
      "lr 2.972414e-06 reg 4.017241e+04 train accuracy: 0.392755 val accuracy: 0.372000\n",
      "lr 2.972414e-06 reg 4.215517e+04 train accuracy: 0.400204 val accuracy: 0.391000\n",
      "lr 2.972414e-06 reg 4.413793e+04 train accuracy: 0.391959 val accuracy: 0.370000\n",
      "lr 2.972414e-06 reg 4.612069e+04 train accuracy: 0.389673 val accuracy: 0.370000\n",
      "lr 2.972414e-06 reg 4.810345e+04 train accuracy: 0.402347 val accuracy: 0.392000\n",
      "lr 2.972414e-06 reg 5.008621e+04 train accuracy: 0.395531 val accuracy: 0.367000\n",
      "lr 2.972414e-06 reg 5.206897e+04 train accuracy: 0.393837 val accuracy: 0.382000\n",
      "lr 2.972414e-06 reg 5.405172e+04 train accuracy: 0.400939 val accuracy: 0.365000\n",
      "lr 2.972414e-06 reg 5.603448e+04 train accuracy: 0.397204 val accuracy: 0.382000\n",
      "lr 2.972414e-06 reg 5.801724e+04 train accuracy: 0.387571 val accuracy: 0.348000\n",
      "lr 2.972414e-06 reg 6.000000e+04 train accuracy: 0.392653 val accuracy: 0.381000\n",
      "lr 3.141379e-06 reg 2.500000e+03 train accuracy: 0.396571 val accuracy: 0.365000\n",
      "lr 3.141379e-06 reg 4.482759e+03 train accuracy: 0.394592 val accuracy: 0.372000\n",
      "lr 3.141379e-06 reg 6.465517e+03 train accuracy: 0.393939 val accuracy: 0.368000\n",
      "lr 3.141379e-06 reg 8.448276e+03 train accuracy: 0.393918 val accuracy: 0.375000\n",
      "lr 3.141379e-06 reg 1.043103e+04 train accuracy: 0.382531 val accuracy: 0.378000\n",
      "lr 3.141379e-06 reg 1.241379e+04 train accuracy: 0.396980 val accuracy: 0.363000\n",
      "lr 3.141379e-06 reg 1.439655e+04 train accuracy: 0.399959 val accuracy: 0.370000\n",
      "lr 3.141379e-06 reg 1.637931e+04 train accuracy: 0.386408 val accuracy: 0.345000\n",
      "lr 3.141379e-06 reg 1.836207e+04 train accuracy: 0.402347 val accuracy: 0.380000\n",
      "lr 3.141379e-06 reg 2.034483e+04 train accuracy: 0.390816 val accuracy: 0.359000\n",
      "lr 3.141379e-06 reg 2.232759e+04 train accuracy: 0.391061 val accuracy: 0.369000\n",
      "lr 3.141379e-06 reg 2.431034e+04 train accuracy: 0.397061 val accuracy: 0.385000\n",
      "lr 3.141379e-06 reg 2.629310e+04 train accuracy: 0.393143 val accuracy: 0.375000\n",
      "lr 3.141379e-06 reg 2.827586e+04 train accuracy: 0.391551 val accuracy: 0.372000\n",
      "lr 3.141379e-06 reg 3.025862e+04 train accuracy: 0.398939 val accuracy: 0.367000\n",
      "lr 3.141379e-06 reg 3.224138e+04 train accuracy: 0.399367 val accuracy: 0.382000\n",
      "lr 3.141379e-06 reg 3.422414e+04 train accuracy: 0.389000 val accuracy: 0.358000\n",
      "lr 3.141379e-06 reg 3.620690e+04 train accuracy: 0.395327 val accuracy: 0.365000\n",
      "lr 3.141379e-06 reg 3.818966e+04 train accuracy: 0.396327 val accuracy: 0.369000\n",
      "lr 3.141379e-06 reg 4.017241e+04 train accuracy: 0.386878 val accuracy: 0.361000\n",
      "lr 3.141379e-06 reg 4.215517e+04 train accuracy: 0.399020 val accuracy: 0.365000\n",
      "lr 3.141379e-06 reg 4.413793e+04 train accuracy: 0.398735 val accuracy: 0.367000\n",
      "lr 3.141379e-06 reg 4.612069e+04 train accuracy: 0.399592 val accuracy: 0.390000\n",
      "lr 3.141379e-06 reg 4.810345e+04 train accuracy: 0.396592 val accuracy: 0.366000\n",
      "lr 3.141379e-06 reg 5.008621e+04 train accuracy: 0.398837 val accuracy: 0.387000\n",
      "lr 3.141379e-06 reg 5.206897e+04 train accuracy: 0.392735 val accuracy: 0.363000\n",
      "lr 3.141379e-06 reg 5.405172e+04 train accuracy: 0.395592 val accuracy: 0.367000\n",
      "lr 3.141379e-06 reg 5.603448e+04 train accuracy: 0.397980 val accuracy: 0.361000\n",
      "lr 3.141379e-06 reg 5.801724e+04 train accuracy: 0.397918 val accuracy: 0.363000\n",
      "lr 3.141379e-06 reg 6.000000e+04 train accuracy: 0.391612 val accuracy: 0.375000\n",
      "lr 3.310345e-06 reg 2.500000e+03 train accuracy: 0.393735 val accuracy: 0.380000\n",
      "lr 3.310345e-06 reg 4.482759e+03 train accuracy: 0.395816 val accuracy: 0.369000\n",
      "lr 3.310345e-06 reg 6.465517e+03 train accuracy: 0.380265 val accuracy: 0.375000\n",
      "lr 3.310345e-06 reg 8.448276e+03 train accuracy: 0.396265 val accuracy: 0.374000\n",
      "lr 3.310345e-06 reg 1.043103e+04 train accuracy: 0.392735 val accuracy: 0.365000\n",
      "lr 3.310345e-06 reg 1.241379e+04 train accuracy: 0.393020 val accuracy: 0.364000\n",
      "lr 3.310345e-06 reg 1.439655e+04 train accuracy: 0.403367 val accuracy: 0.379000\n",
      "lr 3.310345e-06 reg 1.637931e+04 train accuracy: 0.398571 val accuracy: 0.379000\n",
      "lr 3.310345e-06 reg 1.836207e+04 train accuracy: 0.401735 val accuracy: 0.378000\n",
      "lr 3.310345e-06 reg 2.034483e+04 train accuracy: 0.396286 val accuracy: 0.353000\n",
      "lr 3.310345e-06 reg 2.232759e+04 train accuracy: 0.400245 val accuracy: 0.360000\n",
      "lr 3.310345e-06 reg 2.431034e+04 train accuracy: 0.387694 val accuracy: 0.366000\n",
      "lr 3.310345e-06 reg 2.629310e+04 train accuracy: 0.388510 val accuracy: 0.351000\n",
      "lr 3.310345e-06 reg 2.827586e+04 train accuracy: 0.396429 val accuracy: 0.379000\n",
      "lr 3.310345e-06 reg 3.025862e+04 train accuracy: 0.394959 val accuracy: 0.360000\n",
      "lr 3.310345e-06 reg 3.224138e+04 train accuracy: 0.388551 val accuracy: 0.353000\n",
      "lr 3.310345e-06 reg 3.422414e+04 train accuracy: 0.397082 val accuracy: 0.388000\n",
      "lr 3.310345e-06 reg 3.620690e+04 train accuracy: 0.394551 val accuracy: 0.367000\n",
      "lr 3.310345e-06 reg 3.818966e+04 train accuracy: 0.396694 val accuracy: 0.391000\n",
      "lr 3.310345e-06 reg 4.017241e+04 train accuracy: 0.393633 val accuracy: 0.382000\n",
      "lr 3.310345e-06 reg 4.215517e+04 train accuracy: 0.394898 val accuracy: 0.376000\n",
      "lr 3.310345e-06 reg 4.413793e+04 train accuracy: 0.394755 val accuracy: 0.367000\n",
      "lr 3.310345e-06 reg 4.612069e+04 train accuracy: 0.390633 val accuracy: 0.364000\n",
      "lr 3.310345e-06 reg 4.810345e+04 train accuracy: 0.384306 val accuracy: 0.352000\n",
      "lr 3.310345e-06 reg 5.008621e+04 train accuracy: 0.394224 val accuracy: 0.378000\n",
      "lr 3.310345e-06 reg 5.206897e+04 train accuracy: 0.394571 val accuracy: 0.356000\n",
      "lr 3.310345e-06 reg 5.405172e+04 train accuracy: 0.396102 val accuracy: 0.376000\n",
      "lr 3.310345e-06 reg 5.603448e+04 train accuracy: 0.400265 val accuracy: 0.367000\n",
      "lr 3.310345e-06 reg 5.801724e+04 train accuracy: 0.394918 val accuracy: 0.362000\n",
      "lr 3.310345e-06 reg 6.000000e+04 train accuracy: 0.388204 val accuracy: 0.374000\n",
      "lr 3.479310e-06 reg 2.500000e+03 train accuracy: 0.395245 val accuracy: 0.370000\n",
      "lr 3.479310e-06 reg 4.482759e+03 train accuracy: 0.394898 val accuracy: 0.378000\n",
      "lr 3.479310e-06 reg 6.465517e+03 train accuracy: 0.384388 val accuracy: 0.353000\n",
      "lr 3.479310e-06 reg 8.448276e+03 train accuracy: 0.401878 val accuracy: 0.398000\n",
      "lr 3.479310e-06 reg 1.043103e+04 train accuracy: 0.391347 val accuracy: 0.368000\n",
      "lr 3.479310e-06 reg 1.241379e+04 train accuracy: 0.402041 val accuracy: 0.366000\n",
      "lr 3.479310e-06 reg 1.439655e+04 train accuracy: 0.392469 val accuracy: 0.370000\n",
      "lr 3.479310e-06 reg 1.637931e+04 train accuracy: 0.396265 val accuracy: 0.388000\n",
      "lr 3.479310e-06 reg 1.836207e+04 train accuracy: 0.402959 val accuracy: 0.369000\n",
      "lr 3.479310e-06 reg 2.034483e+04 train accuracy: 0.394939 val accuracy: 0.368000\n",
      "lr 3.479310e-06 reg 2.232759e+04 train accuracy: 0.403102 val accuracy: 0.386000\n",
      "lr 3.479310e-06 reg 2.431034e+04 train accuracy: 0.401163 val accuracy: 0.389000\n",
      "lr 3.479310e-06 reg 2.629310e+04 train accuracy: 0.391143 val accuracy: 0.360000\n",
      "lr 3.479310e-06 reg 2.827586e+04 train accuracy: 0.396143 val accuracy: 0.376000\n",
      "lr 3.479310e-06 reg 3.025862e+04 train accuracy: 0.406122 val accuracy: 0.367000\n",
      "lr 3.479310e-06 reg 3.224138e+04 train accuracy: 0.399837 val accuracy: 0.381000\n",
      "lr 3.479310e-06 reg 3.422414e+04 train accuracy: 0.396000 val accuracy: 0.386000\n",
      "lr 3.479310e-06 reg 3.620690e+04 train accuracy: 0.394327 val accuracy: 0.374000\n",
      "lr 3.479310e-06 reg 3.818966e+04 train accuracy: 0.402673 val accuracy: 0.392000\n",
      "lr 3.479310e-06 reg 4.017241e+04 train accuracy: 0.397000 val accuracy: 0.360000\n",
      "lr 3.479310e-06 reg 4.215517e+04 train accuracy: 0.394918 val accuracy: 0.361000\n",
      "lr 3.479310e-06 reg 4.413793e+04 train accuracy: 0.386714 val accuracy: 0.356000\n",
      "lr 3.479310e-06 reg 4.612069e+04 train accuracy: 0.395816 val accuracy: 0.381000\n",
      "lr 3.479310e-06 reg 4.810345e+04 train accuracy: 0.397184 val accuracy: 0.394000\n",
      "lr 3.479310e-06 reg 5.008621e+04 train accuracy: 0.395673 val accuracy: 0.373000\n",
      "lr 3.479310e-06 reg 5.206897e+04 train accuracy: 0.398510 val accuracy: 0.384000\n",
      "lr 3.479310e-06 reg 5.405172e+04 train accuracy: 0.400959 val accuracy: 0.369000\n",
      "lr 3.479310e-06 reg 5.603448e+04 train accuracy: 0.400000 val accuracy: 0.380000\n",
      "lr 3.479310e-06 reg 5.801724e+04 train accuracy: 0.402469 val accuracy: 0.380000\n",
      "lr 3.479310e-06 reg 6.000000e+04 train accuracy: 0.388122 val accuracy: 0.380000\n",
      "lr 3.648276e-06 reg 2.500000e+03 train accuracy: 0.403878 val accuracy: 0.384000\n",
      "lr 3.648276e-06 reg 4.482759e+03 train accuracy: 0.393449 val accuracy: 0.392000\n",
      "lr 3.648276e-06 reg 6.465517e+03 train accuracy: 0.387347 val accuracy: 0.381000\n",
      "lr 3.648276e-06 reg 8.448276e+03 train accuracy: 0.403918 val accuracy: 0.373000\n",
      "lr 3.648276e-06 reg 1.043103e+04 train accuracy: 0.396857 val accuracy: 0.373000\n",
      "lr 3.648276e-06 reg 1.241379e+04 train accuracy: 0.378612 val accuracy: 0.355000\n",
      "lr 3.648276e-06 reg 1.439655e+04 train accuracy: 0.393429 val accuracy: 0.374000\n",
      "lr 3.648276e-06 reg 1.637931e+04 train accuracy: 0.404755 val accuracy: 0.380000\n",
      "lr 3.648276e-06 reg 1.836207e+04 train accuracy: 0.389388 val accuracy: 0.372000\n",
      "lr 3.648276e-06 reg 2.034483e+04 train accuracy: 0.390510 val accuracy: 0.355000\n",
      "lr 3.648276e-06 reg 2.232759e+04 train accuracy: 0.405224 val accuracy: 0.379000\n",
      "lr 3.648276e-06 reg 2.431034e+04 train accuracy: 0.400571 val accuracy: 0.362000\n",
      "lr 3.648276e-06 reg 2.629310e+04 train accuracy: 0.396102 val accuracy: 0.375000\n",
      "lr 3.648276e-06 reg 2.827586e+04 train accuracy: 0.395327 val accuracy: 0.381000\n",
      "lr 3.648276e-06 reg 3.025862e+04 train accuracy: 0.398449 val accuracy: 0.385000\n",
      "lr 3.648276e-06 reg 3.224138e+04 train accuracy: 0.397490 val accuracy: 0.379000\n",
      "lr 3.648276e-06 reg 3.422414e+04 train accuracy: 0.390184 val accuracy: 0.372000\n",
      "lr 3.648276e-06 reg 3.620690e+04 train accuracy: 0.398061 val accuracy: 0.387000\n",
      "lr 3.648276e-06 reg 3.818966e+04 train accuracy: 0.405429 val accuracy: 0.387000\n",
      "lr 3.648276e-06 reg 4.017241e+04 train accuracy: 0.401939 val accuracy: 0.398000\n",
      "lr 3.648276e-06 reg 4.215517e+04 train accuracy: 0.398714 val accuracy: 0.361000\n",
      "lr 3.648276e-06 reg 4.413793e+04 train accuracy: 0.402224 val accuracy: 0.386000\n",
      "lr 3.648276e-06 reg 4.612069e+04 train accuracy: 0.394551 val accuracy: 0.348000\n",
      "lr 3.648276e-06 reg 4.810345e+04 train accuracy: 0.394367 val accuracy: 0.361000\n",
      "lr 3.648276e-06 reg 5.008621e+04 train accuracy: 0.396265 val accuracy: 0.373000\n",
      "lr 3.648276e-06 reg 5.206897e+04 train accuracy: 0.391612 val accuracy: 0.349000\n",
      "lr 3.648276e-06 reg 5.405172e+04 train accuracy: 0.398224 val accuracy: 0.362000\n",
      "lr 3.648276e-06 reg 5.603448e+04 train accuracy: 0.403837 val accuracy: 0.367000\n",
      "lr 3.648276e-06 reg 5.801724e+04 train accuracy: 0.400184 val accuracy: 0.378000\n",
      "lr 3.648276e-06 reg 6.000000e+04 train accuracy: 0.393694 val accuracy: 0.371000\n",
      "lr 3.817241e-06 reg 2.500000e+03 train accuracy: 0.405000 val accuracy: 0.380000\n",
      "lr 3.817241e-06 reg 4.482759e+03 train accuracy: 0.404694 val accuracy: 0.385000\n",
      "lr 3.817241e-06 reg 6.465517e+03 train accuracy: 0.405041 val accuracy: 0.379000\n",
      "lr 3.817241e-06 reg 8.448276e+03 train accuracy: 0.385327 val accuracy: 0.359000\n",
      "lr 3.817241e-06 reg 1.043103e+04 train accuracy: 0.389857 val accuracy: 0.346000\n",
      "lr 3.817241e-06 reg 1.241379e+04 train accuracy: 0.395959 val accuracy: 0.385000\n",
      "lr 3.817241e-06 reg 1.439655e+04 train accuracy: 0.393694 val accuracy: 0.380000\n",
      "lr 3.817241e-06 reg 1.637931e+04 train accuracy: 0.396633 val accuracy: 0.375000\n",
      "lr 3.817241e-06 reg 1.836207e+04 train accuracy: 0.389796 val accuracy: 0.358000\n",
      "lr 3.817241e-06 reg 2.034483e+04 train accuracy: 0.394776 val accuracy: 0.382000\n",
      "lr 3.817241e-06 reg 2.232759e+04 train accuracy: 0.379878 val accuracy: 0.352000\n",
      "lr 3.817241e-06 reg 2.431034e+04 train accuracy: 0.398286 val accuracy: 0.375000\n",
      "lr 3.817241e-06 reg 2.629310e+04 train accuracy: 0.397816 val accuracy: 0.384000\n",
      "lr 3.817241e-06 reg 2.827586e+04 train accuracy: 0.391878 val accuracy: 0.362000\n",
      "lr 3.817241e-06 reg 3.025862e+04 train accuracy: 0.394347 val accuracy: 0.363000\n",
      "lr 3.817241e-06 reg 3.224138e+04 train accuracy: 0.403041 val accuracy: 0.373000\n",
      "lr 3.817241e-06 reg 3.422414e+04 train accuracy: 0.402102 val accuracy: 0.375000\n",
      "lr 3.817241e-06 reg 3.620690e+04 train accuracy: 0.401020 val accuracy: 0.367000\n",
      "lr 3.817241e-06 reg 3.818966e+04 train accuracy: 0.380755 val accuracy: 0.356000\n",
      "lr 3.817241e-06 reg 4.017241e+04 train accuracy: 0.402633 val accuracy: 0.371000\n",
      "lr 3.817241e-06 reg 4.215517e+04 train accuracy: 0.400204 val accuracy: 0.378000\n",
      "lr 3.817241e-06 reg 4.413793e+04 train accuracy: 0.393449 val accuracy: 0.364000\n",
      "lr 3.817241e-06 reg 4.612069e+04 train accuracy: 0.390714 val accuracy: 0.367000\n",
      "lr 3.817241e-06 reg 4.810345e+04 train accuracy: 0.396327 val accuracy: 0.351000\n",
      "lr 3.817241e-06 reg 5.008621e+04 train accuracy: 0.393306 val accuracy: 0.364000\n",
      "lr 3.817241e-06 reg 5.206897e+04 train accuracy: 0.396490 val accuracy: 0.353000\n",
      "lr 3.817241e-06 reg 5.405172e+04 train accuracy: 0.404449 val accuracy: 0.374000\n",
      "lr 3.817241e-06 reg 5.603448e+04 train accuracy: 0.396020 val accuracy: 0.351000\n",
      "lr 3.817241e-06 reg 5.801724e+04 train accuracy: 0.404939 val accuracy: 0.389000\n",
      "lr 3.817241e-06 reg 6.000000e+04 train accuracy: 0.394694 val accuracy: 0.366000\n",
      "lr 3.986207e-06 reg 2.500000e+03 train accuracy: 0.403041 val accuracy: 0.379000\n",
      "lr 3.986207e-06 reg 4.482759e+03 train accuracy: 0.404755 val accuracy: 0.381000\n",
      "lr 3.986207e-06 reg 6.465517e+03 train accuracy: 0.401694 val accuracy: 0.360000\n",
      "lr 3.986207e-06 reg 8.448276e+03 train accuracy: 0.394163 val accuracy: 0.367000\n",
      "lr 3.986207e-06 reg 1.043103e+04 train accuracy: 0.398918 val accuracy: 0.374000\n",
      "lr 3.986207e-06 reg 1.241379e+04 train accuracy: 0.406531 val accuracy: 0.386000\n",
      "lr 3.986207e-06 reg 1.439655e+04 train accuracy: 0.377306 val accuracy: 0.356000\n",
      "lr 3.986207e-06 reg 1.637931e+04 train accuracy: 0.403796 val accuracy: 0.388000\n",
      "lr 3.986207e-06 reg 1.836207e+04 train accuracy: 0.396061 val accuracy: 0.378000\n",
      "lr 3.986207e-06 reg 2.034483e+04 train accuracy: 0.395898 val accuracy: 0.374000\n",
      "lr 3.986207e-06 reg 2.232759e+04 train accuracy: 0.400163 val accuracy: 0.369000\n",
      "lr 3.986207e-06 reg 2.431034e+04 train accuracy: 0.396980 val accuracy: 0.365000\n",
      "lr 3.986207e-06 reg 2.629310e+04 train accuracy: 0.390367 val accuracy: 0.367000\n",
      "lr 3.986207e-06 reg 2.827586e+04 train accuracy: 0.402735 val accuracy: 0.371000\n",
      "lr 3.986207e-06 reg 3.025862e+04 train accuracy: 0.393714 val accuracy: 0.369000\n",
      "lr 3.986207e-06 reg 3.224138e+04 train accuracy: 0.389857 val accuracy: 0.376000\n",
      "lr 3.986207e-06 reg 3.422414e+04 train accuracy: 0.402653 val accuracy: 0.373000\n",
      "lr 3.986207e-06 reg 3.620690e+04 train accuracy: 0.389061 val accuracy: 0.389000\n",
      "lr 3.986207e-06 reg 3.818966e+04 train accuracy: 0.404673 val accuracy: 0.377000\n",
      "lr 3.986207e-06 reg 4.017241e+04 train accuracy: 0.398469 val accuracy: 0.365000\n",
      "lr 3.986207e-06 reg 4.215517e+04 train accuracy: 0.396429 val accuracy: 0.372000\n",
      "lr 3.986207e-06 reg 4.413793e+04 train accuracy: 0.400551 val accuracy: 0.392000\n",
      "lr 3.986207e-06 reg 4.612069e+04 train accuracy: 0.383898 val accuracy: 0.362000\n",
      "lr 3.986207e-06 reg 4.810345e+04 train accuracy: 0.396837 val accuracy: 0.376000\n",
      "lr 3.986207e-06 reg 5.008621e+04 train accuracy: 0.392551 val accuracy: 0.368000\n",
      "lr 3.986207e-06 reg 5.206897e+04 train accuracy: 0.397306 val accuracy: 0.362000\n",
      "lr 3.986207e-06 reg 5.405172e+04 train accuracy: 0.397796 val accuracy: 0.373000\n",
      "lr 3.986207e-06 reg 5.603448e+04 train accuracy: 0.395735 val accuracy: 0.373000\n",
      "lr 3.986207e-06 reg 5.801724e+04 train accuracy: 0.403918 val accuracy: 0.378000\n",
      "lr 3.986207e-06 reg 6.000000e+04 train accuracy: 0.390102 val accuracy: 0.361000\n",
      "lr 4.155172e-06 reg 2.500000e+03 train accuracy: 0.396286 val accuracy: 0.402000\n",
      "lr 4.155172e-06 reg 4.482759e+03 train accuracy: 0.388449 val accuracy: 0.364000\n",
      "lr 4.155172e-06 reg 6.465517e+03 train accuracy: 0.394327 val accuracy: 0.374000\n",
      "lr 4.155172e-06 reg 8.448276e+03 train accuracy: 0.386367 val accuracy: 0.368000\n",
      "lr 4.155172e-06 reg 1.043103e+04 train accuracy: 0.396653 val accuracy: 0.358000\n",
      "lr 4.155172e-06 reg 1.241379e+04 train accuracy: 0.402327 val accuracy: 0.363000\n",
      "lr 4.155172e-06 reg 1.439655e+04 train accuracy: 0.388959 val accuracy: 0.368000\n",
      "lr 4.155172e-06 reg 1.637931e+04 train accuracy: 0.404000 val accuracy: 0.353000\n",
      "lr 4.155172e-06 reg 1.836207e+04 train accuracy: 0.406061 val accuracy: 0.356000\n",
      "lr 4.155172e-06 reg 2.034483e+04 train accuracy: 0.401918 val accuracy: 0.378000\n",
      "lr 4.155172e-06 reg 2.232759e+04 train accuracy: 0.394490 val accuracy: 0.360000\n",
      "lr 4.155172e-06 reg 2.431034e+04 train accuracy: 0.396694 val accuracy: 0.372000\n",
      "lr 4.155172e-06 reg 2.629310e+04 train accuracy: 0.394898 val accuracy: 0.371000\n",
      "lr 4.155172e-06 reg 2.827586e+04 train accuracy: 0.392980 val accuracy: 0.354000\n",
      "lr 4.155172e-06 reg 3.025862e+04 train accuracy: 0.392551 val accuracy: 0.362000\n",
      "lr 4.155172e-06 reg 3.224138e+04 train accuracy: 0.393224 val accuracy: 0.378000\n",
      "lr 4.155172e-06 reg 3.422414e+04 train accuracy: 0.399306 val accuracy: 0.375000\n",
      "lr 4.155172e-06 reg 3.620690e+04 train accuracy: 0.395184 val accuracy: 0.373000\n",
      "lr 4.155172e-06 reg 3.818966e+04 train accuracy: 0.394327 val accuracy: 0.368000\n",
      "lr 4.155172e-06 reg 4.017241e+04 train accuracy: 0.404429 val accuracy: 0.386000\n",
      "lr 4.155172e-06 reg 4.215517e+04 train accuracy: 0.407592 val accuracy: 0.363000\n",
      "lr 4.155172e-06 reg 4.413793e+04 train accuracy: 0.385980 val accuracy: 0.374000\n",
      "lr 4.155172e-06 reg 4.612069e+04 train accuracy: 0.390122 val accuracy: 0.365000\n",
      "lr 4.155172e-06 reg 4.810345e+04 train accuracy: 0.396837 val accuracy: 0.365000\n",
      "lr 4.155172e-06 reg 5.008621e+04 train accuracy: 0.399408 val accuracy: 0.376000\n",
      "lr 4.155172e-06 reg 5.206897e+04 train accuracy: 0.397980 val accuracy: 0.383000\n",
      "lr 4.155172e-06 reg 5.405172e+04 train accuracy: 0.399837 val accuracy: 0.376000\n",
      "lr 4.155172e-06 reg 5.603448e+04 train accuracy: 0.397673 val accuracy: 0.368000\n",
      "lr 4.155172e-06 reg 5.801724e+04 train accuracy: 0.389735 val accuracy: 0.357000\n",
      "lr 4.155172e-06 reg 6.000000e+04 train accuracy: 0.382449 val accuracy: 0.357000\n",
      "lr 4.324138e-06 reg 2.500000e+03 train accuracy: 0.401816 val accuracy: 0.362000\n",
      "lr 4.324138e-06 reg 4.482759e+03 train accuracy: 0.382939 val accuracy: 0.360000\n",
      "lr 4.324138e-06 reg 6.465517e+03 train accuracy: 0.397490 val accuracy: 0.365000\n",
      "lr 4.324138e-06 reg 8.448276e+03 train accuracy: 0.392918 val accuracy: 0.368000\n",
      "lr 4.324138e-06 reg 1.043103e+04 train accuracy: 0.396449 val accuracy: 0.369000\n",
      "lr 4.324138e-06 reg 1.241379e+04 train accuracy: 0.382571 val accuracy: 0.368000\n",
      "lr 4.324138e-06 reg 1.439655e+04 train accuracy: 0.397122 val accuracy: 0.381000\n",
      "lr 4.324138e-06 reg 1.637931e+04 train accuracy: 0.396510 val accuracy: 0.395000\n",
      "lr 4.324138e-06 reg 1.836207e+04 train accuracy: 0.396633 val accuracy: 0.371000\n",
      "lr 4.324138e-06 reg 2.034483e+04 train accuracy: 0.403469 val accuracy: 0.374000\n",
      "lr 4.324138e-06 reg 2.232759e+04 train accuracy: 0.406714 val accuracy: 0.380000\n",
      "lr 4.324138e-06 reg 2.431034e+04 train accuracy: 0.385959 val accuracy: 0.350000\n",
      "lr 4.324138e-06 reg 2.629310e+04 train accuracy: 0.386306 val accuracy: 0.360000\n",
      "lr 4.324138e-06 reg 2.827586e+04 train accuracy: 0.396612 val accuracy: 0.373000\n",
      "lr 4.324138e-06 reg 3.025862e+04 train accuracy: 0.398143 val accuracy: 0.373000\n",
      "lr 4.324138e-06 reg 3.224138e+04 train accuracy: 0.396449 val accuracy: 0.358000\n",
      "lr 4.324138e-06 reg 3.422414e+04 train accuracy: 0.399612 val accuracy: 0.405000\n",
      "lr 4.324138e-06 reg 3.620690e+04 train accuracy: 0.399082 val accuracy: 0.353000\n",
      "lr 4.324138e-06 reg 3.818966e+04 train accuracy: 0.398633 val accuracy: 0.382000\n",
      "lr 4.324138e-06 reg 4.017241e+04 train accuracy: 0.395061 val accuracy: 0.348000\n",
      "lr 4.324138e-06 reg 4.215517e+04 train accuracy: 0.401878 val accuracy: 0.358000\n",
      "lr 4.324138e-06 reg 4.413793e+04 train accuracy: 0.396102 val accuracy: 0.367000\n",
      "lr 4.324138e-06 reg 4.612069e+04 train accuracy: 0.397204 val accuracy: 0.361000\n",
      "lr 4.324138e-06 reg 4.810345e+04 train accuracy: 0.396980 val accuracy: 0.383000\n",
      "lr 4.324138e-06 reg 5.008621e+04 train accuracy: 0.397816 val accuracy: 0.365000\n",
      "lr 4.324138e-06 reg 5.206897e+04 train accuracy: 0.398327 val accuracy: 0.365000\n",
      "lr 4.324138e-06 reg 5.405172e+04 train accuracy: 0.391429 val accuracy: 0.366000\n",
      "lr 4.324138e-06 reg 5.603448e+04 train accuracy: 0.399939 val accuracy: 0.365000\n",
      "lr 4.324138e-06 reg 5.801724e+04 train accuracy: 0.393163 val accuracy: 0.365000\n",
      "lr 4.324138e-06 reg 6.000000e+04 train accuracy: 0.403388 val accuracy: 0.365000\n",
      "lr 4.493103e-06 reg 2.500000e+03 train accuracy: 0.382408 val accuracy: 0.361000\n",
      "lr 4.493103e-06 reg 4.482759e+03 train accuracy: 0.393408 val accuracy: 0.367000\n",
      "lr 4.493103e-06 reg 6.465517e+03 train accuracy: 0.390755 val accuracy: 0.366000\n",
      "lr 4.493103e-06 reg 8.448276e+03 train accuracy: 0.391592 val accuracy: 0.364000\n",
      "lr 4.493103e-06 reg 1.043103e+04 train accuracy: 0.387224 val accuracy: 0.348000\n",
      "lr 4.493103e-06 reg 1.241379e+04 train accuracy: 0.376531 val accuracy: 0.341000\n",
      "lr 4.493103e-06 reg 1.439655e+04 train accuracy: 0.403020 val accuracy: 0.390000\n",
      "lr 4.493103e-06 reg 1.637931e+04 train accuracy: 0.397531 val accuracy: 0.370000\n",
      "lr 4.493103e-06 reg 1.836207e+04 train accuracy: 0.404857 val accuracy: 0.388000\n",
      "lr 4.493103e-06 reg 2.034483e+04 train accuracy: 0.410939 val accuracy: 0.375000\n",
      "lr 4.493103e-06 reg 2.232759e+04 train accuracy: 0.399000 val accuracy: 0.402000\n",
      "lr 4.493103e-06 reg 2.431034e+04 train accuracy: 0.403653 val accuracy: 0.364000\n",
      "lr 4.493103e-06 reg 2.629310e+04 train accuracy: 0.390429 val accuracy: 0.362000\n",
      "lr 4.493103e-06 reg 2.827586e+04 train accuracy: 0.403245 val accuracy: 0.363000\n",
      "lr 4.493103e-06 reg 3.025862e+04 train accuracy: 0.401714 val accuracy: 0.361000\n",
      "lr 4.493103e-06 reg 3.224138e+04 train accuracy: 0.393082 val accuracy: 0.356000\n",
      "lr 4.493103e-06 reg 3.422414e+04 train accuracy: 0.396102 val accuracy: 0.378000\n",
      "lr 4.493103e-06 reg 3.620690e+04 train accuracy: 0.400286 val accuracy: 0.381000\n",
      "lr 4.493103e-06 reg 3.818966e+04 train accuracy: 0.409755 val accuracy: 0.377000\n",
      "lr 4.493103e-06 reg 4.017241e+04 train accuracy: 0.397388 val accuracy: 0.354000\n",
      "lr 4.493103e-06 reg 4.215517e+04 train accuracy: 0.403286 val accuracy: 0.373000\n",
      "lr 4.493103e-06 reg 4.413793e+04 train accuracy: 0.394490 val accuracy: 0.374000\n",
      "lr 4.493103e-06 reg 4.612069e+04 train accuracy: 0.395286 val accuracy: 0.378000\n",
      "lr 4.493103e-06 reg 4.810345e+04 train accuracy: 0.404796 val accuracy: 0.352000\n",
      "lr 4.493103e-06 reg 5.008621e+04 train accuracy: 0.397571 val accuracy: 0.370000\n",
      "lr 4.493103e-06 reg 5.206897e+04 train accuracy: 0.400592 val accuracy: 0.374000\n",
      "lr 4.493103e-06 reg 5.405172e+04 train accuracy: 0.398265 val accuracy: 0.357000\n",
      "lr 4.493103e-06 reg 5.603448e+04 train accuracy: 0.403816 val accuracy: 0.371000\n",
      "lr 4.493103e-06 reg 5.801724e+04 train accuracy: 0.402102 val accuracy: 0.352000\n",
      "lr 4.493103e-06 reg 6.000000e+04 train accuracy: 0.378551 val accuracy: 0.356000\n",
      "lr 4.662069e-06 reg 2.500000e+03 train accuracy: 0.398306 val accuracy: 0.382000\n",
      "lr 4.662069e-06 reg 4.482759e+03 train accuracy: 0.388694 val accuracy: 0.370000\n",
      "lr 4.662069e-06 reg 6.465517e+03 train accuracy: 0.391694 val accuracy: 0.356000\n",
      "lr 4.662069e-06 reg 8.448276e+03 train accuracy: 0.402347 val accuracy: 0.375000\n",
      "lr 4.662069e-06 reg 1.043103e+04 train accuracy: 0.389163 val accuracy: 0.353000\n",
      "lr 4.662069e-06 reg 1.241379e+04 train accuracy: 0.394082 val accuracy: 0.372000\n",
      "lr 4.662069e-06 reg 1.439655e+04 train accuracy: 0.389000 val accuracy: 0.365000\n",
      "lr 4.662069e-06 reg 1.637931e+04 train accuracy: 0.391102 val accuracy: 0.357000\n",
      "lr 4.662069e-06 reg 1.836207e+04 train accuracy: 0.391265 val accuracy: 0.367000\n",
      "lr 4.662069e-06 reg 2.034483e+04 train accuracy: 0.396510 val accuracy: 0.369000\n",
      "lr 4.662069e-06 reg 2.232759e+04 train accuracy: 0.401245 val accuracy: 0.367000\n",
      "lr 4.662069e-06 reg 2.431034e+04 train accuracy: 0.396898 val accuracy: 0.376000\n",
      "lr 4.662069e-06 reg 2.629310e+04 train accuracy: 0.388347 val accuracy: 0.356000\n",
      "lr 4.662069e-06 reg 2.827586e+04 train accuracy: 0.381184 val accuracy: 0.358000\n",
      "lr 4.662069e-06 reg 3.025862e+04 train accuracy: 0.380061 val accuracy: 0.337000\n",
      "lr 4.662069e-06 reg 3.224138e+04 train accuracy: 0.389163 val accuracy: 0.361000\n",
      "lr 4.662069e-06 reg 3.422414e+04 train accuracy: 0.402429 val accuracy: 0.351000\n",
      "lr 4.662069e-06 reg 3.620690e+04 train accuracy: 0.396245 val accuracy: 0.395000\n",
      "lr 4.662069e-06 reg 3.818966e+04 train accuracy: 0.367531 val accuracy: 0.331000\n",
      "lr 4.662069e-06 reg 4.017241e+04 train accuracy: 0.401224 val accuracy: 0.375000\n",
      "lr 4.662069e-06 reg 4.215517e+04 train accuracy: 0.396898 val accuracy: 0.355000\n",
      "lr 4.662069e-06 reg 4.413793e+04 train accuracy: 0.389531 val accuracy: 0.368000\n",
      "lr 4.662069e-06 reg 4.612069e+04 train accuracy: 0.396571 val accuracy: 0.369000\n",
      "lr 4.662069e-06 reg 4.810345e+04 train accuracy: 0.403388 val accuracy: 0.388000\n",
      "lr 4.662069e-06 reg 5.008621e+04 train accuracy: 0.389755 val accuracy: 0.366000\n",
      "lr 4.662069e-06 reg 5.206897e+04 train accuracy: 0.401694 val accuracy: 0.359000\n",
      "lr 4.662069e-06 reg 5.405172e+04 train accuracy: 0.400898 val accuracy: 0.369000\n",
      "lr 4.662069e-06 reg 5.603448e+04 train accuracy: 0.400531 val accuracy: 0.376000\n",
      "lr 4.662069e-06 reg 5.801724e+04 train accuracy: 0.401612 val accuracy: 0.363000\n",
      "lr 4.662069e-06 reg 6.000000e+04 train accuracy: 0.402939 val accuracy: 0.365000\n",
      "lr 4.831034e-06 reg 2.500000e+03 train accuracy: 0.392592 val accuracy: 0.329000\n",
      "lr 4.831034e-06 reg 4.482759e+03 train accuracy: 0.379000 val accuracy: 0.338000\n",
      "lr 4.831034e-06 reg 6.465517e+03 train accuracy: 0.396122 val accuracy: 0.388000\n",
      "lr 4.831034e-06 reg 8.448276e+03 train accuracy: 0.393571 val accuracy: 0.358000\n",
      "lr 4.831034e-06 reg 1.043103e+04 train accuracy: 0.394265 val accuracy: 0.351000\n",
      "lr 4.831034e-06 reg 1.241379e+04 train accuracy: 0.387265 val accuracy: 0.368000\n",
      "lr 4.831034e-06 reg 1.439655e+04 train accuracy: 0.400163 val accuracy: 0.359000\n",
      "lr 4.831034e-06 reg 1.637931e+04 train accuracy: 0.383673 val accuracy: 0.376000\n",
      "lr 4.831034e-06 reg 1.836207e+04 train accuracy: 0.381204 val accuracy: 0.371000\n",
      "lr 4.831034e-06 reg 2.034483e+04 train accuracy: 0.389694 val accuracy: 0.358000\n",
      "lr 4.831034e-06 reg 2.232759e+04 train accuracy: 0.401020 val accuracy: 0.368000\n",
      "lr 4.831034e-06 reg 2.431034e+04 train accuracy: 0.383673 val accuracy: 0.344000\n",
      "lr 4.831034e-06 reg 2.629310e+04 train accuracy: 0.407816 val accuracy: 0.359000\n",
      "lr 4.831034e-06 reg 2.827586e+04 train accuracy: 0.399796 val accuracy: 0.369000\n",
      "lr 4.831034e-06 reg 3.025862e+04 train accuracy: 0.403980 val accuracy: 0.388000\n",
      "lr 4.831034e-06 reg 3.224138e+04 train accuracy: 0.395653 val accuracy: 0.357000\n",
      "lr 4.831034e-06 reg 3.422414e+04 train accuracy: 0.393918 val accuracy: 0.350000\n",
      "lr 4.831034e-06 reg 3.620690e+04 train accuracy: 0.391265 val accuracy: 0.363000\n",
      "lr 4.831034e-06 reg 3.818966e+04 train accuracy: 0.388367 val accuracy: 0.374000\n",
      "lr 4.831034e-06 reg 4.017241e+04 train accuracy: 0.372837 val accuracy: 0.331000\n",
      "lr 4.831034e-06 reg 4.215517e+04 train accuracy: 0.397224 val accuracy: 0.371000\n",
      "lr 4.831034e-06 reg 4.413793e+04 train accuracy: 0.382143 val accuracy: 0.360000\n",
      "lr 4.831034e-06 reg 4.612069e+04 train accuracy: 0.382959 val accuracy: 0.351000\n",
      "lr 4.831034e-06 reg 4.810345e+04 train accuracy: 0.402163 val accuracy: 0.374000\n",
      "lr 4.831034e-06 reg 5.008621e+04 train accuracy: 0.385020 val accuracy: 0.352000\n",
      "lr 4.831034e-06 reg 5.206897e+04 train accuracy: 0.380612 val accuracy: 0.341000\n",
      "lr 4.831034e-06 reg 5.405172e+04 train accuracy: 0.394510 val accuracy: 0.337000\n",
      "lr 4.831034e-06 reg 5.603448e+04 train accuracy: 0.397633 val accuracy: 0.380000\n",
      "lr 4.831034e-06 reg 5.801724e+04 train accuracy: 0.379776 val accuracy: 0.340000\n",
      "lr 4.831034e-06 reg 6.000000e+04 train accuracy: 0.407224 val accuracy: 0.385000\n",
      "lr 5.000000e-06 reg 2.500000e+03 train accuracy: 0.387184 val accuracy: 0.354000\n",
      "lr 5.000000e-06 reg 4.482759e+03 train accuracy: 0.368571 val accuracy: 0.345000\n",
      "lr 5.000000e-06 reg 6.465517e+03 train accuracy: 0.401020 val accuracy: 0.370000\n",
      "lr 5.000000e-06 reg 8.448276e+03 train accuracy: 0.389224 val accuracy: 0.364000\n",
      "lr 5.000000e-06 reg 1.043103e+04 train accuracy: 0.406612 val accuracy: 0.390000\n",
      "lr 5.000000e-06 reg 1.241379e+04 train accuracy: 0.384510 val accuracy: 0.352000\n",
      "lr 5.000000e-06 reg 1.439655e+04 train accuracy: 0.387694 val accuracy: 0.335000\n",
      "lr 5.000000e-06 reg 1.637931e+04 train accuracy: 0.401918 val accuracy: 0.354000\n",
      "lr 5.000000e-06 reg 1.836207e+04 train accuracy: 0.399245 val accuracy: 0.370000\n",
      "lr 5.000000e-06 reg 2.034483e+04 train accuracy: 0.390408 val accuracy: 0.368000\n",
      "lr 5.000000e-06 reg 2.232759e+04 train accuracy: 0.370735 val accuracy: 0.328000\n",
      "lr 5.000000e-06 reg 2.431034e+04 train accuracy: 0.392571 val accuracy: 0.372000\n",
      "lr 5.000000e-06 reg 2.629310e+04 train accuracy: 0.405571 val accuracy: 0.383000\n",
      "lr 5.000000e-06 reg 2.827586e+04 train accuracy: 0.388898 val accuracy: 0.356000\n",
      "lr 5.000000e-06 reg 3.025862e+04 train accuracy: 0.395184 val accuracy: 0.361000\n",
      "lr 5.000000e-06 reg 3.224138e+04 train accuracy: 0.406918 val accuracy: 0.382000\n",
      "lr 5.000000e-06 reg 3.422414e+04 train accuracy: 0.403612 val accuracy: 0.360000\n",
      "lr 5.000000e-06 reg 3.620690e+04 train accuracy: 0.394592 val accuracy: 0.378000\n",
      "lr 5.000000e-06 reg 3.818966e+04 train accuracy: 0.378551 val accuracy: 0.363000\n",
      "lr 5.000000e-06 reg 4.017241e+04 train accuracy: 0.401571 val accuracy: 0.371000\n",
      "lr 5.000000e-06 reg 4.215517e+04 train accuracy: 0.397490 val accuracy: 0.368000\n",
      "lr 5.000000e-06 reg 4.413793e+04 train accuracy: 0.386694 val accuracy: 0.337000\n",
      "lr 5.000000e-06 reg 4.612069e+04 train accuracy: 0.384204 val accuracy: 0.372000\n",
      "lr 5.000000e-06 reg 4.810345e+04 train accuracy: 0.385633 val accuracy: 0.374000\n",
      "lr 5.000000e-06 reg 5.008621e+04 train accuracy: 0.405408 val accuracy: 0.393000\n",
      "lr 5.000000e-06 reg 5.206897e+04 train accuracy: 0.374959 val accuracy: 0.329000\n",
      "lr 5.000000e-06 reg 5.405172e+04 train accuracy: 0.398959 val accuracy: 0.367000\n",
      "lr 5.000000e-06 reg 5.603448e+04 train accuracy: 0.384224 val accuracy: 0.347000\n",
      "lr 5.000000e-06 reg 5.801724e+04 train accuracy: 0.384714 val accuracy: 0.355000\n",
      "lr 5.000000e-06 reg 6.000000e+04 train accuracy: 0.402592 val accuracy: 0.370000\n",
      "best validation accuracy achieved during cross-validation: 0.405000\n"
     ]
    }
   ],
   "source": [
    "# Use the validation set to tune hyperparameters (regularization strength and\n",
    "# learning rate). You should experiment with different ranges for the learning\n",
    "# rates and regularization strengths; if you are careful you should be able to\n",
    "# get a classification accuracy of over 0.35 on the validation set.\n",
    "\n",
    "from cs231n.classifiers import Softmax\n",
    "results = {}\n",
    "best_val = -1\n",
    "best_softmax = None\n",
    "\n",
    "################################################################################\n",
    "# TODO:                                                                        #\n",
    "# Use the validation set to set the learning rate and regularization strength. #\n",
    "# This should be identical to the validation that you did for the SVM; save    #\n",
    "# the best trained softmax classifer in best_softmax.                          #\n",
    "################################################################################\n",
    "\n",
    "# Provided as a reference. You may or may not want to change these hyperparameters\n",
    "learning_rates = [1e-7, 5e-7]\n",
    "regularization_strengths = [2.5e4, 5e4]\n",
    "\n",
    "# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n",
    "\n",
    "lr_rates = np.linspace(1e-7, 5e-6,30)\n",
    "regs = np.linspace(2.5e3, 6e4 ,30)\n",
    "best_val=0\n",
    "num_iters = 2000\n",
    "for lr in lr_rates:\n",
    "    for reg in regs:\n",
    "        print\n",
    "        sm = Softmax()\n",
    "        loss_hist = sm.train(X_train,y_train,learning_rate=lr,reg=reg,num_iters=num_iters,verbose=False)\n",
    "        \n",
    "        y_train_pred = sm.predict(X_train)\n",
    "        train_acc = np.mean(y_train_pred==y_train)\n",
    "        y_val_pred = sm.predict(X_val)\n",
    "        val_acc = np.mean(y_val_pred==y_val)\n",
    "        \n",
    "        if best_val < val_acc:\n",
    "            best_val = val_acc\n",
    "            best_softmax = sm\n",
    "            \n",
    "        results[(lr,reg)]=train_acc,val_acc\n",
    "\n",
    "# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****\n",
    "    \n",
    "# Print out results.\n",
    "for lr, reg in sorted(results):\n",
    "    train_accuracy, val_accuracy = results[(lr, reg)]\n",
    "    print('lr %e reg %e train accuracy: %f val accuracy: %f' % (\n",
    "                lr, reg, train_accuracy, val_accuracy))\n",
    "    \n",
    "print('best validation accuracy achieved during cross-validation: %f' % best_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "test"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "softmax on raw pixels final test set accuracy: 0.355000\n"
     ]
    }
   ],
   "source": [
    "# evaluate on test set\n",
    "# Evaluate the best softmax on test set\n",
    "y_test_pred = best_softmax.predict(X_test)\n",
    "test_accuracy = np.mean(y_test == y_test_pred)\n",
    "print('softmax on raw pixels final test set accuracy: %f' % (test_accuracy, ))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": [
     "pdf-inline"
    ]
   },
   "source": [
    "**Inline Question 2** - *True or False*\n",
    "\n",
    "Suppose the overall training loss is defined as the sum of the per-datapoint loss over all training examples. It is possible to add a new datapoint to a training set that would leave the SVM loss unchanged, but this is not the case with the Softmax classifier loss.\n",
    "\n",
    "$\\color{blue}{\\textit Your Answer:}$\n",
    "\n",
    "\n",
    "$\\color{blue}{\\textit Your Explanation:}$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAFrCAYAAADVbFNIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADGDklEQVR4nOy9d3hd1ZW/v45611XvxZKs5ibJvVewMWBMDyQEQkgy6ZmUycxkSqanTCbfyaQXCIHQMQaDMe69F7lKsnrvvdfz+8POfo/yA2cmESHcrPd5eFiWzj337Hq21mevtS3btkVRFEVRFMWd8XivH0BRFEVRFOXdRhc8iqIoiqK4PbrgURRFURTF7dEFj6IoiqIobo8ueBRFURRFcXt0waMoiqIoitvzvl3wWJa1yrKsuvf6ORRFAcuyqizLWvc2P19uWVbJVNxLUZTfH8uyfmlZ1r++18/xXvC+XfAoivL+wbbtQ7ZtZ73Xz6H88dAFq/Knhi54FLfBsiyv9/oZlP872m6K8v7m/TKG/+QXPNf/Svgby7KuWJbVaVnWE5Zl+b3NdX9tWVa5ZVm916+90/G7RyzLOmxZ1n9ev0elZVm3OH4falnWLyzLarQsq96yrH+1LMvzj1VG5RqWZSVZlrXFsqxWy7LaLcv6vmVZ6ZZl7b3+7zbLsn5tWZbL8Zkqy7K+alnWBRHpf78MPDdn/m+P19+WoN+u3SzLesiyrOrrbf219/D5ld/i/zo2Lct6SkSSRWSbZVl9lmX91XtagD9jLMvKtyzr7PV34/Mi4uf43W2WZRValtVlWdZRy7JmO34Xb1nWy9fbvNKyrM85fvd1y7JesizracuyekTkkT9qoX5P/uQXPNf5oIisF5F0EckUkb97m2vKRWS5iISKyD+JyNOWZcU5fr9QREpEJFJEviUiv7Asy7r+uydFZExEMkQkX0RuFpHHpr4YyjtxfYH5uohUi0iqiCSIyHMiYonIf4hIvIjkiEiSiHz9tz7+gIjcKiIu27bH/jhPrNyA/814FXG02/XrfiQiD8m1to4QkcR3+0GV383vMzZt235IRGpE5HbbtoNs2/7WH/3BFbEsy0dEtorIUyISLiIvisjd139XICKPi8gn5Np4+4mIvGZZlq9lWR4isk1Ezsu19l4rIl+wLGu94/Z3iMhLcm38/vqPUJw/HNu2/6T/E5EqEfkLx783yrXFzSoRqbvB5wpF5I7r9iMiUub4XYCI2CISKyIxIjIsIv6O3z8gIvve67L/Of0nIotFpFVEvH7HdZtF5Nxv9Y9H3+vn1/8mtcfvHK+/3W4i8g8i8pzj34EiMiIi697rMv25//cHjk1tv/e27VaISIOIWI6fHRWRf5Vrf2D8y29dXyIiK+Wag6Dmt373NyLyxHX76yJy8L0u3//1v/eL+7/WYVfLtb8oJmFZ1odF5Ity7S8QEZEguebN+Q1NvzFs2x647twJkmurXm8RacThIx6/9Z3Ku0+SiFTbv+WhsSwrWkS+J9e8d8FyrW06f+uz2lZ/WvzO8fo218U7/23bdr9lWe3vwrMp/3f+kLGpvLfEi0i9fX2Vcp3q6/9PEZGHLcv6rON3Ptc/My4i8ZZldTl+5ykihxz/ft/Nu+8XSSvJYSfLtRWrwbKsFBH5mYh8RkQibNt2icglueZy/V3UyjUPT6Rt267r/4XYtj1jSp5c+d9SKyLJb7MH5z/kmjdutm3bISLyIfn/t6styp8SNxyvDpzt1uj8nGVZAXLNza689/y+Y1PH5XtPo4gkOLZviFwbkyLX2vXfHO89l23bAbZtP3v9d5W/9btg27Y3Ou7zvmvf98uC59OWZSValhUuIn8rIs//1u8D5Vrlt4qIWJb1ERGZ+b+5sW3bjSKyU0S+Y1lWiGVZHtc3462cusdX/heclGuD8xuWZQVe3+i6VK795dgnIl2WZSWIyFfey4dU/lf8rvH6drwkIrdZlrXs+r6Df5b3z/zk7vy+Y7NZRNL+uI+q/BbH5Nr+1M9dDwy4S0QWXP/dz0TkLyzLWmhdI9CyrFstywqWa23ecz2wwN+yLE/LsmZaljX/PSrHlPB+mVCekWuLkorr/01KmmTb9hUR+Y5ca9xmEZklIkf+D/f/sFxz5V2Ray7Zl0Qk7oafUKYU27bHReR2ubZxvEZE6kTkfrm2Ab1ARLpF5A0R2fJePaPyv+aG4/XtsG37soh8+vpnG+XaONTEon8C/AFj8z9E5O+uRwB9+Y/3xMpvsG17RETukmv7WDvlWrttuf670yLyMRH5/vXflV2/ztnmeSJSKSJtIvJzuRYU9L7Fmizt/elhWVaViDxm2/bu9/pZFEVRFEV5f/J+8fAoiqIoiqL83uiCR1EURVEUt+dPXtJSFEVRFEX5Q1EPj6IoiqIobs8NEw9+9wtfMe6fhoQF5ucVMW8ZO7N1hbGbXm00dtaG+4zt7fEfxu6ODzd2/fCgsQOtZGPb5YXGDrbWGrt5e6Cxl3/osLFLqlm3xUf3GvvkQe9J5ZmTQ6b6I+lXeb5beY4F59mE/vKv5hk71qZsaWuGjJ3bkGrsjvbLxvaXIGNHdvoauzyB79q32N/Yi8/7GNtyhRn7n//mk/+bXEL/Kz78re+Z9sz1PW1+3lDEs65eQHBa5WVyiC3op46fHyYysbnxpLHvmEa97J3eZewZsbnGDrnEEWWdEzHG3h6619iZFu22OS6Ye/5oclqWYyuomn/zoV5fCBw1du6hFGMPpsQa+3I935fQx329FmYb2y+20Ng19dTRtOB+Y/t4PWfsovCtxg468iNjx8eQd++L3/6nKWnPH//draYtzxXkmZ83HaW8Czx7jB3je87YZV4fNbblS0b4bM/Vxi4a22ns/jPLjV23PMTYYcO7jL00hmI1VgYYu7yBfrPhJoKufnbq4Unl+Xj5T4z9ms8dxl7dST/d8kFzzI+sLKJPtc3h2K25vcwjR2ryjL22utvYVenkz7s4Th1FxJGntL/7qLG9PSeMHd6Yb+y//8/vTtnY/MuvFJj2DBz+sPn5nObzxt6ZzXwxa6DL2HMH5hr7VB/BqWnBecZ+yZd+HT/GXJYUQfkHrGhj19ZXGttn7bCxE05zn5SaImO3Do5PKo+9sd7YLdO5rnwbh6cnZpI5pHvGRWOf/in9bX3wD4ydmrHB2I3j5cYO82O+PHmZ9k/zY453eTOvdeZWGLvpVygcP9z3+JS051PL5pqbliStMT+vu5lnWFxZZey24Sxjl8xn7vKzqbfpXvTBsG0Dxq4Ov8fYM3xbjB0Qydh8ppJiBQbPMvbaStJlVa/rMrbvoZJJ5elw2GEJzMcBaY5x9IJjzD/EfFpwPsrYXgk/NnbPqduNnZtBmq6iEPpRpM1zR0TxTig+4jL2kQsnjP3IQ6wVPvOpL71tW6qHR1EURVEUt0cXPIqiKIqiuD03lLSiBnEh+1f/vbHrm8kjFjL+rLGT85dyTf//GDtsGHfXaBhusJyiYmN7O1xtbZdxafvN3G/s0H9ZYuxzVbgBb52F6/JXIzx/xIOTj/BpfiXP2KkXkCj8A3HatZ4mwfIt2TxfRCvu5KpyZJmxSq7Z/pUMY6/7Ju7IwBlIQGN7cJvfVsMBwnEP4Pr8eS31NZV0X8LVWJ2C2zglABdp/QXa50qKy9jNB3ADz1lMfrH2LFzIW2ffbez5j//K2GXzcaFLIu7LdbW4eB8NnWZs30jczFW7cHX7Pzw5yWfGwCljHzzl+I4w5A7Jws3bHvumsdd25xm7dANuWp/RK3x3f4Kxe3KQJbtLuH74PN81tvCCsa/6IfUm1myTqabEhz4y63SfsRf50U4Nc5FwT5WQ8DbEBxnOuwrJJKS72dhdKzYbe3bOGWMHjqYbO83Dz9hvHccVnbAWaSQnnHG27xhjK3fkwKTyDE9DKrFv4Qitc/+E1Nvth/xysv1lnvvCKmMXOaSu2QM/M7ZrACnunNA2QwnIbAuE9u4PoWzThH7dFFEl7wYLvR/iO8aRxovyeaYVqYyLIycLjP10DHLu7EjKHz1APx2dy1gp66KtescYH9Pa+Pt3aRT96PAxJNBxL7Yn7JhHX8jwmTxndZym3YqavkgZ+syRhrK7ifacfwLJcX09sk5yEpJNfCDPvaOqy9i3JTNnJYzwTA0LKU94OWPfavmgsUdTnYLN1NA6k9MXQhbwQvrAXuayA3OZ+0Z7ebd0nD1m7AUJSJVSiLTbEcVWC79+pL1XUmjL+ac2GXtkOZJkWiVSZeE8xtBFm7GZuWThpPJ4tjMvlF2abuyYGOq04zbetUuOIgfH2kjAjSeQM8Oj2S7h5ckyJOAkP/dP4n065DihbU4I21k8PvZ5nm1wj/wu1MOjKIqiKIrbowseRVEURVHcnhtKWl1dyA8B9y42dlQjMk7DNFx21lV23c+se8XYz4XcZWzvatyy8Wyul+PebKqe6/GqsUcTiazxPIJr3RrlZPotsezOHv1pjbGnzW6dVJ6Lj7KjO2gPrsCgQuS0lPh/NvaLEbhH5/m5jO3jc6uxX45A3nn0/FZjH5p3i7HtFnbDZwYRRbH3Q7gOx0/galxWift9KlmSddbYnWFIUZVtRL9F7a8ydko0MlN7P3Jl+jkkxN5lRMXdeoZd+K2LkID8E+gX3hNEG+z5LvLeotsp89la5Knqli5jz8UjLCIiPSvoAxdaqct10Xzm9FHW9Lm9uHnrc6uMfe4c0WVpm3YY+7adnzb2P41uNfbM0XuNPRSEe9WnBTf1v00QVfCSyyVTjV90qrFdR7qM/exNtOuqk8gS88YZF93tPGdtABFObzkqeMGbuKWLV7mMnbqLMdU2vMzYM5ciw1SVIO2FByKXRgQhsczsu3lSeU6E/9zYIadyjB33mRnGvuMg/fdUnCNCqIXIyv5NuNyPhuJCP++LRDX3EH1t6zIi0/r+m755IoEokjfqkGs2ZCM5TCXnvZkMK5OZlu8qZaxVxjMXelnPGHuBz03GnhHAnO3pw7jO6X7J2F1l92OPsE3gzEChsXtXMd83VyA/zktnTig9QkTgsT6kCxGRtGnIkiv7S42d6otcVRBGm/iHUbb2ICSUzoAqY1/y491RcJrnuxLBO6jqHubj9L3Ie8P7iXwbXUE/WtU29dsHLvYj4845hSxTu5H3WvcV6q49iL68oTOPa56lLfsXrDL2W51ImFl5yHzzm9B9oixk9BUnaZsTi3nP5MRxz8hneKfXBE6Ohk1YwBwXM73M2AM1jLXxTJ4jPIg+cjmWuWDcZh3QV4XEbrUwd+xLQ377citz1pYaJLO8HCTzOS9w4lTxKPOLMHVPQj08iqIoiqK4PbrgURRFURTF7bmhpHUiHBfvAyeJ+CipxP1YlobLLryFZGW755Ak6tZjREKcDWY3fkoqrvWTLceNPZxNksOWN3Bj+sUgdXi6cNeeS8k09m1fwr1ZNkyUmYjI9DNEKrTNYa1XfRV33NydlC1kOdFYjYns5o+pIdle7Ciu6COh/2nswP4Xjb07hLKNJ+DKS30JF+dZR5TawmkueTeo78PVOrAFqSH7PlyBDV/cZ+yWMdzPzbOQMracIKrAt4/EUslXkR+GvHBXt9aye972IMIgaA2S1lPeRHUkRNAtH7T4rmcXEakgIrL2MG7tsjzcvL9qod0yH0DuSNjB54/lENFwcwARf71PEwl2IKXa2AXJRMt0n6NPBm5YZOwmv9eN/dqBvzJ2UTuyxFQR3Ev/b1hF5MsnLlMPF1FtZctj9OvpTyNPLszAXX24GKnn5O0khZxRxpjqyCAiJqAdN/jIOGPZFc2YsFv5bOohl7G//xCJ6UREEjyISEn/Ac/aMkSfLfvHvzT2pRr6aUinIxrn1f3G9o+jb/pnIn/6DeL63/Rrxp1fJAnXZvgjW89ZTNLGVxZQhqkktsiRCLWLiLXj6cg7AY469o7DrT+/6pKxh0ooz57FtG1pMD7+vx7hPs/5IGPePw254hdCJFNGHeWvaScicGYr9Tv44PZJ5en/G/rY0Y8jGzUNIKn0l/LzuDOM+ea1tHnWXsagVxqRRL7LSX7ramTMDrfwvUPBSDP9H2M7RF0dsm/Sg7yPpor5MdRXaBv9tHmY91pawDeMndj+F8aO9OYdV3w7dRIfT5999Dj3Ly5ab2zPcsrbuGS/sVO82ow914N+c243fS7lJvpNzEXekyIih+seMPaKTuTJsKPM2dWRvB9P+/J985qYj0pcbBeI8KaPd/vTBiu7mGePJXQZOzWO78rpcUSf3sn46HkdCeydUA+PoiiKoihujy54FEVRFEVxe24oaQV4O+SERCSA6Eu412Yc5ZrxLqJdZnwWN3vK5g8Y26MHt9Mvo9jJP2saMkRFIe6rVSsdLvc6Il+iS0kelmtzzbh9kPtsIgGUiMjYL9g9PnecqLDRC5Sh/lF+vulxkvPtupuzl0ZuYif5mjZcpQe24X6dl43UJ+1Eew0MIUWMbOaaiiJcggv8kH2mkoQoIqcawrAHHJEKeeeJ2vC9got/2wYkiKKgjxh7+gTu4efiiX7InkNfmOVNkrRXBoj4yHRIYBFjyIpBe+mWxz/Bmnx5Pe0kItIST/TbpQqiM25LIMpndBcu4uM51HHcFeS0I130t+wVq4yd0I8EFvQaMovLccZW4AjtWV6Jy70s5CvGXlH9mEw18SOMr11dRCMVJ9JPY/uQLr7TXGjsXyxDljgyiBxQ4EtUyMVd1Ml0RwKwNy8zfrMX4972OcCYaJpBf7eCcY/vWE17rW6h3kRExoqI5PO5l3YOHHacJbWLsb3Al7Hsn0JdHPDlPnfmc+bZ3nMOGcNCfqlyJK3LsFYZu+0q8vyVeKJ9sr/miGCZPL38QUzMZd451Uu/i02mnkIucQ5hfwlt8kw0ct2s1cjT8YFEr646TzTli6VICPMXUkelvcgagUVbjR3miwzS6E9dj+fTv+ziycnqAlJJbplZQZRQWESqsUd6qoydlsm7oNMR1fqqI+pwWb2jzwcTIbi4CUnvSBLj9C+GXVw/zGdvauKeu/qRvD+GcvMHkdVDvR/oZ17qLuQZQuc+bexi7yeNHeA4z2ztIdrmVCBjzSvrQ8b2qUQyPpdPn10yxhz44wbe19Pr6e9LfGmXgVOHjN0Ux1YWEZEsR2LawGLm6dEcPlMSy1zu7es48+wEMlaGEJmW2IO0+UY28rkdzzoj14uxXH+Vs8H2xPI+yT3FXJN0/++OoFQPj6IoiqIobo8ueBRFURRFcXtuKGklh+KCGj2De61oIy6vz1cRkXFwLi7xxiBchXVDuJpsi0iARQ24pSt9cNdmxhPh1HCGKJjp/lxTu4znWRnFz3cf5Zk/9RQ7xEVEXsrFVXx5ZI6xvZYjv4RsIYoq4ha+I74aCci3g/scHkbGGPRF9rkyzm7z3nbc/f6fRPZJvoy7fn3Z3xn7rTUka+KkkD8cr04irQpmVRn7XDh17BtCsrrucOSOe6vYGf/68BvGjgkkmsW/jqi4tAYSnR22cD8nxtEvVriIzClK5+y1Q67NXHMeGbO4kwRVIiL14yQ6vGsZMuDlN7qMfc8Y31GWhUzzTUdux6X9RKN1P0ubbF3E9Z/JIaJhtB9X6/EhQqGGe5ETXOE8T9fdzuiyj8hU8FoIyeZy3+IZvGKIWji6jr4cfRT5YTyAKLM4i775Wj+ywppcZKXnE3AnL3Bcf/IWomlCOqnQwYW4qyOeJtmjfy4ufb84omyu/RL5uL0NWS4/hPE8nEh50mqQj8uPcA7d9NlERO66iPyUksLPa0bpjwO76V/lSY7nSyXaJ+wyY6LvfvrKVHLIF2kiJ5HnXvw6UldhMPLAzSuZ846MktCt66fIVXeuQL54zbvL2J/MZPvA/4uinYMrXMYOWoTMkPJ9JMCgZYzrgEufNHZR7G+9Sv6C+S9gJ++LH/ghffxHAj+/6kLG6jvMeyR/I33yyn8zdwyt4rn7/e4z9hcbiQh+eiYyXvZRxsthfxLQJo87zquaIl6MQAJdPZN3yOtv0sZZmURpDZz6OM+W8ENj941+ztjjcxmzVwf2G9snhHl5ruOssZABR/LPMJJ8hgY9wc/9kL2ORRDx+oVmok1FRP61j/MFqzPody6bPpJ+ibnPtumzEz1IjEMBvGcLI3lXxpxEYkztIvLzrDc/n27zvccc9qwxl7GPF9KHHkP1m4R6eBRFURRFcXt0waMoiqIoittzQ0mrtxr30rkUXHMpV3GVlnaRZOjVMdz4t/USUeEbg8vxOQ9c6zmOZEXph3FRtyfiovX/JFEeMRc4c6ShmyiFHwfgyksowa319JdxY4qIWPW4wpLGv2rsbcWcS/MPsZx1dV4cklgGLtSDUdw3+SI72NcVIHUMdSLRhIWScKrzSdy4V3LZbX4pnLqYn0CyKpHPyVRRVUFzW5t57sETRGnV15MwMDgAl/C2UdyLEz08d0crfSHiVuruwpuUc9ESZJbzQdznv7yQxta2kMSs1xf3bds4/cK757ZJ5ZmzkMiFE+WOJFpJq4z9Wie7/ssnSNj15WO4x12Oc9w8Hef7xF8lwmtwlIiGmtmO8+COE/E0L5262DaHa8b+G9lE8F7/QaS9hDxZ/ShtudQbmSHnBHWXOUZddw1wXtyl5ZRxySnGR0kzZ9fERiMBVU1D0kp5Hvmvd6DL2DFDjHEPF9csqEHq8org/iIiTf5EI530Qxqd7XKcxeWIZDycgtwoacwRN/lw3+pGkuqVDnH9xVQkk7l/gct9wzO036/mInuMlxDlEhqLzDuVfKiacVF+tsfYz89GQgvoQiqpq+W5g4Y59yxzHWPzpyHUfVYsksPJIuol6ARRQWvqGQcN48zffhuJ3rriz1yWWsWYGF/smlSelu/xXliRzu9uGaVPdrQyH3mNU06PjUTeDBbTz7M/xLNWedIPC3bzrEczmacje9mGMN+mbascEbSN27hmqqgZIEJtTwVza8ptvEN7zvIM3jOJ0srq3mxsj2jKVbuDM9+W3OqIrAtgDjzXxlh2rcwzdvkpZL60aZyjduEYElNxNxLza8W0t4jIB6K57n8m2MKycgaSVmAXsnrxAGN2ThrtXeOYQ6PakbonknlvtC3lmoV76UNtY8wP2cGUf389c/qtixin74R6eBRFURRFcXt0waMoiqIoittz4yitWbimerelGnvTDNyJzyxit3WcC5da5EUS2BV1sev7Qxs4t6h9Hy7U0PwuHmoMN9XQLiJBTg3gQpvbmGfssWJc5c2fJwlXzBmSO4mItF/kMyUJX+detyM/vLkTt/74EC61iDaiDlacItlgRSD3bPNDchsevsPYybFIg8WDRJ14lyD13JfAuVr1lbhBp5L2YaJcgr+P6zBrIxEs7TFEnWX/Epd47kxcy3s20D7Zh4k6mjj+mrFHluCiP9rhcLVeQCa8wx/JbHiFI5KrD5d+UC3S2KmMyWeljI29bOy5LZyz9FoAfeCWJZx7lrcTt3DpBlzcQwf4Ds8opAKPQ7hp50YRXRIe6IiEaiaB4XAGETL5W2nn7FVIMVNFt4s6SuhFrtnuS2LHGY6EYX/n+/+M/dFh+uPhQeqhJR33vn8V7uHo41z/igf1E5ZB/dw8dIuxawcdZ805pOD+cOygnyHPiIh4rMf1vXkUSazwMH2nJx8ZILSKSKM2LySQs13cpyWGuWZhocvYozXIpz7DyFv7FyGLLjpCH399IxLbzFGk0KlkvINImONBnA044EiMOLcP2aFzYJWxD4TRVh02ff/2bFz/l3fTBxvWUYbgY9TvC/eSMC+jhe+9cAQJ7L4Jwl8ORNHv0mudMrzIjHikvy0ezAuzG3nut7KYt0OGiRRdGIEE82pil7HzHGc3BbQRXXUwjCjgxnHmOLuYxHh1mUjV7Wfpe5ke/HyqcAUQAezhONsuKJZyeQzTTgUXmJcaF5JE0U4jqis8AtlnfxlztKuAMs7tZM4pO4PU/mAc/brrNGNlxgTv1mEf5s+QgslRWlVNbBlZGsK7sq+Neg9u4/sSU9na0X8VCfR0HDJxXjfbVmacI8KzcS3SZvtsZKyOXbwr6spTje1/q+MMrwPM0fffI2+LengURVEURXF7dMGjKIqiKIrbc0NJ67gHrtIkNlXL442sk6JiXcbuukSCruNhuESTw3FdJp7F1Xm5ERdX0WyiCz74OtLQzuIPGjvlE0hU3b64rvvWVBk7pJAojaGjuNxFRFJTORuqIimVe/36TWPPmY47bmcP0kVgFe744TtwC161kPRWFeEePnwVt/See4nSGVuMi7NyH67PmGZceWMnSMgoX5ApY/qXcC03f49kbenHkOs8UpAjTt/lOGNsCBlgUW+Xsc9MkMjqpjEkhMIYpIKNxbg7X1n0CWMX/wypxLWeBGMtzUTa3TXkOA+pfrI0NGfxR409nPcrvq+XpHGBRzjXpX8U2aBlO+5iCcFV3uNDmyz2Q6LaM0ofyeqjraLu5HrfX+Ne7pxFsq/DrUi375AP6//M4nupuyvfIvlj8H18V44v5cptImndnljO3srzI4rtpn9KNfb+ezifrsGbKMsZK3Ct5/YQNRO5gmSBnieI5GjtwG3eP8H1s+6irkREmgtJgpaw+HljH/4S/WXWD4hIaZvFHLSs9r+NPbaYaKSKUuag6mhksiXxtN9T9ZwBtdBx3lJQJRGBWUt57qA91K98TKaMneH0l+x0JGb/SpJteod8ydgdtcx/t80g+VzjSebOU320w21RLmMf2UrUjV++I7nbD5BDJ6KYy9aHIhWciGMMes9lXreeY34QEdk+ggySsha5KraMdgtIo396NyP3XKggOmn9ccIaB12M8ZRPIb9uOcd8/JVCtiSUliKntPRRX8c3OOZjD6TLqUoKmrkUKXnvIPNGlIso5gvZSGmdgSTjrWpg7vL3RfYaWthl7E8Nkwj0u5eYK/2nswUhIZY5/cqzjq0gPshEnm30g6bFJPsNciTsFBHxbUo1dkcGEWW3X+Dd3D+IpPnqONfPjEaicw3di+1He5/fxDvx8DDjdGMNfW3mx+lPRa/QN9O3sr3Gd55zTvmCvB3q4VEURVEUxe3RBY+iKIqiKG7PDSUt363shF+e3GXsS8m4wmIGkCuiRnChxo8hXXWHEuFz2GJn9yxfpJvmcdzJRzbjQp5WiKvtjOD2XdCMu6sWVUWWP4yL8pgLSUZEpNyL9V10GWeN+IfhEq0NwXV2SyDu3rI05JCyZqS+xxKQcd7qJ2FT6gLK03UC129uH+7OuBoi2SLyuSZsJbbIfTJV9L+Jazo6DznxWECesbMt3M/BZ3EdLs/A/dy5n7qLzEdC3L+N+pp2gjp9ogB5ZLyFiKh1K3AtV77mMrZHB31k7/RUY39xpiPZnIg8XohMk+FLQq2qMOSVeV701QE/3N0d9xGBt/YUz529/wfGfnnGA8a+Gs5ZT5mn9/OsAV3G9nrsTp7nBFJRw34im6aKy6WMkdjHkECie2nXE94PGXtoCa7snlhk2MgnCo29wyFhNtxPG8x/DZkouJSIiqJjRH+czSLKo7ORMfjReKLJmjKr+K6nJpcnYh3fcXqMdp73L44+lUO7nvQlcmgw/kHH8zEv9K53GXuslu8+cxqZKLOZcf1SCpGCGz9JGaJriEwZzpp8Pt9UEemLi9/rKWTS+OWUZ9iReDU8mUirjDc462pNHnN28RgJCc/6MdVXzadOE84ivc93KBmXLOSKV7KJ2pk7wTaB2p8iB0aFpU4qT0gs2wdqYqjj1K1sXYgJ5TMhxUjg0XHMQW/dwbtj7qXNxh75MpLQnAH62Kv3Mb/OHXYZu7+c+6/dQx8OXe6QKKeIi4VU5K1JROuWeyKlrqqiTgLmIJ33RBGx5XOe8ZXVxfgo62He/OJElbGf9pxu7DXbHVFN8byjulOYi56Zidx060XHOV/ezA8iIgfmUHcpQSTd3T+DOWWgkHd51hnKObEKWTnyaqGxq+bwfKstpOqQYuboSF8ilzsOEXblczcSYN1V3mm+Ftsf3gn18CiKoiiK4vbogkdRFEVRFLfnhpLWfcvY2d4Qgutv3lEiaqJzca2fqUCiSYlld/qlQdySIzZJvDKWEgU1sY3d1lcTkZXmLyKZ0vMNp40dUYBdWbPR2G+Vcn/fbbgNRURqbyUCK6oZV1tcJu7Xq5Vdxg4LwDWXXoXrzM7hmq43SIZXkMD9r7YgpaQOEYFyYQafnR7PevO1Rnbwr2uYnMRrqghvxDUftgl3dNKblP9oHnU2J47u0eJPJFBTFBEZWdW4kwPiiK75QT5l/uHePGO/NoNIkKMxjuRbMUQb+O4hJHBfBK5W37dwrYqIpEzg5hy5pcrYE40kA6y5CVfreCH1OoPj0+SNBNzg43GPGXv25R8ZOyL708b2DCVx2bRD1MXBWKIEgnyQR7oL6P9ThVcg0Qyd7fS10DlfMbZfMWf6+IymGjvlB5Q3dQnSY9Nexm/3HtzdJ+KRT0b7if4I3EAZP92zzdgvJhEVcvUKYyJtO4nzGpfgZhcRWXqcsdbVtt7Yvf/IOG/7L+aLmR5Ivdvu2G1s6yCyevilVGNHdhBB2pGF3B4RjkRztyMSc3a3I9qpH5nhjDcyw1QSmkbZ9scgidQ05xl7zj1dxk7zYMzuvfCwsfurkaHv9fyAscssyr8glAi/dhdJVA+mIcNHP819ls5HQnj9FPPx6gdpT2v/7ZPKc36YxJD3X+EzF9ZQzuFGIij7CpAxX8ngs9++XGXs2h30q7qP8d5JPURbvX4OSWR5AvJ53TJ+3l/HloTSOhKwThWLgmibK8PMoQnDvON84pk3SoOJJguu/3djzwmhXY8mMB47w7hn0Qjja7QZiemN5UhGyRPI6z1PEMl17730swkv5qjXukhAKSKSFcHY7qlnXm9tY17Iz2cOCu5ljr9cTzlzx3hX9hQxfx2PesTYped4n6SuYpvCaAxScsQA5Uyu553gNUyfeCfUw6MoiqIoitujCx5FURRFUdyeG0pah6Nx8bbhiZS+L7DLvfNMobGzQtk5XzSO2/C+IHb8v7EAl/CZq6uMvSgJl1hC/E+MfaWFXeWrfXFRjguSzCwXMkygL5FS0yKQoUREZvjyrIeSU429uAnXXkeoY+d5PG6+tgBch0P5hIU1NVNHaUFEVLzWQV08MMEu/ILz/LylAVfsrJt5hpZyzhmZSoaTkJB2XiVZ2WaHbJR4Bjd46Uxcs3GNRIJkexLl4uGQ8aq9Vxn74924Pk/M22/srjIklM3RtOdrRcgp40G0522tnCv2wmeRU0REQoZwcy6kKiUctVJyX2Ln/rFUIljSLNz3kc24u/PP7DH2ntuoI//zJGSsjOHvhJz1/DzSJslenC+SzcVgvmuqWH2FPvVsOFE3pXu2GHtdI5JT9BIiLy5kUK7CPp6/dc13jJ3fTll8wrjntDG+680xpJ5nTtB+PZ/8V2MnnWeKKU7Gjb2sG1lFRKTmbu570ZGELug7yIfd6/7R2AHBRG9Of/xuvi+WaJbqrrPGPpaBJJvdTmc5l4BbfnlRobFfGyJ6aWGjQ26b+Q6H9PyBeIUh6c4bwE0/Hsr85/cfbDEY+pojOiV3v7FXV5OQ71Af4316E+O6PAIZb0UGEmChD9Ghxx5EHnigjaixZXFIY64TtO2BiclJXiNn0t/KziEr5/syd7TncM10h4zvu5uIyJLZyFvl3ySycvYLyPMdnsxBD2TRnsWniLTrziSh36o+ohrPJziT1T0iU8HyakeEsuMcxVmFvOOOpzLfj5VQjx6JRLGVezEPho8hS3mG8M7JDeaa/aGM9znxJG8s2oY0tOABoqoP9VcZOyuAMRSdyneJiLREEv0VLEhrKR7IY2GOBMRvpTFe5MInjTmt41ljN/Sy7WBJ+FZj+82ibKsaso29e4R3cU8364+WAtq+/HXq+qvy9qiHR1EURVEUt0cXPIqiKIqiuD03lLSGB9k5P+LCZdnjSCq3+cCnjF2W49C90tnZ/4qFazH8Sdz7yUICpb457M5OuUJyo//JwA3+tUbcqYWdacY+k8wu99kjPzX29kWTd+CnVTgiOCpwGx9H6ZAPXMTN+mMX7vHUQaS4tAM8U1holbEv1aQa+x+qcEWfWUvEQ20rkllIP/JWdAuRaa+udEaX3S1TRbtwPtCmIdzdLTEOF+Rxh5w0B1nyVBVu2vY5uE57zyMH3RSFu7rrr6n7bY8iIeTlIp8dv4xc9Q/xPzf2433IYbUeuPrvfoqEhyIiuf5896EIXKHHV+PW9txBv7rJA3fs43mbjb38CvLI4/NXGHv+Fepl4BaSY3U3Os7rKaJPuSKIKKpJx33rf4bnmSp6hLqbe5wkfE1f4dm6nyOy8lAbcuD0eNrVqxu5eSKeqJurPfSVmZG0wbOX6afWZcbg8oyX+PkB5IPuIOSD4Ar60HDu5Mi12mois+K6GC+R97iM3bOd0LrMxZT5cArJL8NaiDpqjSUqJj6AcVfdz2fnVvMcjUFEyDzi92tjnw1mgpjbMvURdyIiF7ch42UlMHf05jDvXnAkXKseZG7KKsPFfyweqSeiiQiZoTtp25EtyP67hXppDCBRpbcPcuDhaMZsSxfjICEQGTOpfbKk5beRNrnUjSTS08xz+3cwXur6kCby5jBfvBjGXDCrkPdRXSwSWE87c81Zf6KTFrVxz9su0g8Lx5HS088jIU0VH7Wp6zWOCL//iWD+WljG3BI4h4jm0POcHXcykcSRt5ZQb4Ueq4xdvYCxUlDGu+tSD23m40HZt89hnsw6xPu0dhQ7+jRjX0RkeAZSUchZxvb2m5FYx/rxnTxafcrYu0c5524ojL6Z0cl2hD0XqSM/D8pz1BPZq6ONNstfx7v7yl7a+7a7fvc8qx4eRVEURVHcHl3wKIqiKIri9li2bb/jL7+14Pvml+vW4S7bFkX0zqlu1kxZr+L6TvTFhd6ZwW7riGncp2QQl9hgCi5tnw52mAel4+IaemudsWPaOYyna9qHeegM3NjzVnAGjIjIsWNIXxl1lKFlJq75mtO4k/Mv8axWJrv5/TuJHPHLdkQR1Diuz+KaIQvXXFoQrtimMw6JzR8pxfYjQuLz3145ZYe9fP6fP2jaM9qPKIHOIUfUTgSy1C27cBF2ZToi2TxxoS8f5PrdLbg749firo7bSwTOnmjkFP8lRAJ1N7iMndpIvaRdREqsXfRXk8oT1fIfxo7wQWYciOQz7e240wdaiKLzWIKLdKQZ9/2jERnG/ull3Ol3jjgi8GYQzZLWjFu/KpzvXT9EZFOlRTLMT/7Dc1PSnl/69jdNW/r5ITNV9OEqDomnzc6cIaprdQzu69gS2v7NLPqd1Y40tn7xG8Y+1uSQj3tJJNbhT2jckA+JSfMPIAf1xiPbXBmZLCXc5I3Een4mksawL880EoP80u84r6i3GYlqdgFRSjVX+Ww2yqaM2IzNqhRc4tlvIsn/6NvU0dccsu3eQK55+p4np2xs3v73PzXtucyLc8xqKumPrTPZSpBvMy927qBePOKZjyo2k2ByRdcuYwf6EbH25lOOc9VSiIJyTaN9wkJJ7DjaQnTYeDKyyXl78jl3rr38e9F65K7KDpexo6oYX+2rtxrbr5Xx71/JNU2FSHQRG3jW4n5ktuBx5oFAm/eL5Tj/sfYkZ3WtncOYfeSxH01Jez77F4+btuxybB0YX0InvBjCeyb8MO004JBz7/4QbfOzszyzTwN9Nmca85jscyQ2JLBOrCD67KEg5u4UXyJYI87w7o6ZyVYTEZGT/YyXhY4owNIFnJEYtI15p/I+xrzXMSTm7nT6RCrNIUHtyGyj97EeaTjKc/vV8Ax2HO09I4OCbjnCvLPjm//4tm2pHh5FURRFUdweXfAoiqIoiuL23DBKqykXWeqnHUQnDC8iKdftJ242dse3SVxWdgkZI60UCWBn515j3zIH91XQedxdW2fisot5jgSDg4m4mb1X8b1+R5GnKlu4Z/FepAQRkfowohwionERjp/A+5XjyZH0xQ9TBs9ekjcFhSEhNLyM+/3eUCS39oskdBvL4WyRc02cU5KR6oiE6EfqWlZNeUT2yFQxEETd9Lax1h0JPmHsB8bZoR/SiSvbLiIZWNtypIwJ6TL2zAQivFx9uE6biohGy1+KFFG9l/tk9tA2xxznfEV44mqd9ovXJpWn/BZcnqUrkWaSd/F53wCeKbEP9+/hFiI4FgzT/t+rQN6cP8zzvRKDS3VmL5GGPeU8d24A15fW3Gns8xmcATRVJA4QCdHahdt/TSLu4fE9Vcb2DUJWqA78trHjl/zS2Mtbu4xdkYhccbqHtswKImIjoZVInGPjuK5XtztkmCSiUbx8mDf8T02OuOtYxn2rBpBTcruZFzIrmEdiu/CJvzSP9vMcYkqzQ+njS/2RWF85j+s7J5N+U7aB7/rifyMfXerhu7rTkW1lCnMQpkQSeZJdSNRRZyLzS3oX8suV6cgJWR/iQVpHkFBSn+QMq9IIzh6bVUVdf6SAsp2N4jy/Z1qJXJwRSVSXXxcyYYoj+meVF3OliMjYWsoz3ET79HaRkLOlGglm8Enmc+/1yMdJ/rRhRSjvhfK7iaLLfQWJ7p5zSOxnc5DATlY5ooBjmV8vOs4qmyreSkU+bMyhP6adXmxsu5/3YPxiZLgLZ5ijnqsiWjl4AqlrfBltcOUk/SNp1R3Gbp940tjeNWwdyAgkCWRFFokDZ2SyfaHuQtWk8gT5OLa91LIO8GinzXoykOW6n0e6njmbuS90hEiz3CbO5xrKZ249+HXmncivsF1gsJVzGpNCeIce+TlrgrsXO6KN3wH18CiKoiiK4vbogkdRFEVRFLfnhpJW5JIdxq47hps6rLzL2GuP/srY3+zENbd8GTLOpVpcxcun41ptukD0x6JM5J0NfrjK2zy5T9ty3PUX23DXhqcjk2RM4Frv6k6dVJ6cLlylAyG4+cbm/sLY0/qRBzyaOFNk6EihsSsyeb4ZvrhZu5I4Y+tqANEsRd3IMiuC2WE+3XHmyowWXNHFAbg+p5L5rTzHzgEiO6YN49b3mbXT2FticOsHzEeie2Aa8kjRUySNKhumftej9Ejt15FEgn6MKzfMEQky289xblsRCQKzOkmwt+1zPL+ISNQe2mr2GcpTFeRw1UYTtVLjj5SR3eAI22klwig7h4SBTwesMfa9B6qM3ZJBpErkdNzXDR7Igc1XKefdzc5Ekp+TqaAqiqEb5Uc/LaqgjLN6HFFNt5BUbkY9z3B5GtEucxyJIGNGkLNb7+e7krciE/80hPGeNcx9ArJwY1c6oiHrI+gHS/+KMSQi4vEq8kieTX8MGSb52tF4pMrOc1zv6UV5joc/beyRDvrv4x7IQb6Oo+pq9xA1ODhO/0rJRTI86ke9PHisS94N0rsZUzt9aTd7HPd90BB16dHM/HfOcf5f9BBz4dAc/p6N9uYsvKo+pI+oGiLCuizOWborP4/7FCNJ1XrRv8os5AdfD+YvEZHIo8x/hzqZwzfehnxe5JDBBjqQTeKHkWxGxxiPGdOJ/gn7yu3Gbh5m/P5XAfcMEfpwah8/7w+jvlIu8r6YKqJT6ecLf8K8Zi3pMnalN2On7xSRpPXTkBizbN6JkUXcc6CBiMviVYyJtAaS7no1MnfNDGO7xCkX8979rxE9/Mp8+kGuc7oSkdBHkJY8EuiDbWPISYExyFi3VCMthdRTtm8EcP36FKThPeeR5Tzi7jV2+1MkLL5t4UeNfaaV61eMMg5qvSefAfZ2qIdHURRFURS3Rxc8iqIoiqK4PTeUtDz72J1/PtMhE7StMvZP7yQh34IxXMKVL+GinJPm+HkF9zkR73Cbn0cy84siiVHEQtyYc/oKsctImtTvyJPUEkzSqpSWqknlGWnB3ds6l6ROwY5kajWOhEg1AdxrdRbf1xTM810IxzVf4KjOU2G40CMTcLmWNRJRUJtHwrThaiJYmtMp0F/K1NHqR6TV0p1IBbWLcZFar/AcBTNwTUYH4e6u2I7L+a1sotru9H/A2E91EbGU/RSyUnUS5S/14Xsbc6kjyaHuOi88bOzky/QdEZHEbNpkyJHEsjWZCKxCi2vWNlCGzl6kxfYEIvbaA4mGuF3oDG1puGBD/XDLL/Sl77wcgLu3515kndFOXP9TRUIlkYJXPJEVh+OQYjo2kDAvwlH2hjrqJ2yM/tu4DlmidYLIiYjnqcPik7jiv5j5grH9NiEv/nCICCKpIYLoYUEWLd1OpJCIyLEoXNaBrkLsaqQI32xc2f7BtFlaO1Jyowf14rOZqC7XYX4e8Bb1UhFC+V0OmfCIN318IoG/Cz08kcCmkoNBRAfObaWtLm9Ajkg4R9SR42gw2bCPiKjvxyFTLHHU97wWIr8ORdGel6czbk6FI3dENdP+6SOMzYw02i25GDml1GuyNFSTz/iPPIME3FrL8/U65peunpeNHb4bOebqQkdC2hHaKsufeaclmSR+ucOUM6UMmWZrPOf/bW5h3h1rZ0vCVBFUQ+M8tRBJZ9YY0l7r7R839tWfsLXji8HMFZVbSPIXvTHV2HWOiMhFb1AP5YvpQ91xRE0F7SIyq+OLREoV1yAZfaaM7QVn72OsiIgUX3WcW4a6KzEZlLPuPO16tYCtDRONSLX3zkWqfqbYkZAwh60A2SeYv1x3IVE1v8LP41zMxd65vMf3NjB+vy5vj3p4FEVRFEVxe3TBoyiKoiiK26MLHkVRFEVR3J4b7uF5s5ZfzwxiP090LFlLY+vZq3NkLtro/DyyRFZWsc+nPA4R8MsOTbp/mEyPpavQiSOK0APP1aAxD9yCNtrcgFYblYaG2zo6OVTSuxg9cbofZUjJQn/cdvxBY/cd51kvBrDnZdYq9vBcfZmMsW/mbDB20kiesX0D0NhnBJM5uf5J9su038Q9Xc879rOwteEPJuwqYYu9t/F8feVov53L2H/hVU4I8qFz6Lp9/eyfuKuAw9uODrI3wC/dcaBhJGVe30k21wkXe3hmHkG7Lj9E2OzzXeyZmPUpQmJFRM4fcxk7fYLwz/mV7IHyDGBPTmsnfbU0BT3ZSvhvY/dfYu9C01L+HsgJfsvY9UPsGfhOPX3MnkvoaKMjtUJxIH1tk0wN6ePsSTibfsLx8y5ju7xcxvatoA26A28xdt9ZwkkDOslSKzM4zPZSIO26cAOa+dkE9imdLaUfJFxm70zbaq4fGyLjduCCydmn7/djH8NOF/1rLJ+s1sv2kUriF8H0hYt+7MmZXcnYCdnLPq2YFPZDbI1kH9LtdA95axp7hMIL2eeUUE9ajdcW0ZbkXv/DufUqWYeb7+ChEl5mD6O1hCy3c3Yyd37ndubLvz2yythbHO22dR3ja1Md+2XahqnH1LBH+Hkz5Sybxj6Xum72eqzNJvN5UNLklBFyyrH/L43v9ommTVqvsIfTJ4/yzOpnnIbU0j8vZjB/dSazb23In9D96L1Vxq5aQbuNTOfdcbbSEZbe4tgMNUU0D/I8gcHMX7HB7KtpfZ5x8cNU3gOvdrOvpqeAd9mbl3iHfCuFNAHbHPtfVjmyTJdHsu9mXug/Grvh78nA3LGQVBW/iGDMZr86eVkQz7YfaZrhOCC8m2zccVlklo/dVmjsp1bxXu/cR5/oTmMuCEkjh0mzB/NyeSFtFp3/78b2t39p7ENNzIPJ7ez9fCfUw6MoiqIoitujCx5FURRFUdyeG0paUV6442Z4O0IlA5A3RpK5JqGV7Jd15Y4Q4EwynsZWs8Z6eQF2tiPb7dE+3F3+9XnGviWK8OYrp8gCPWjj3ow7TsbX6jzc7CIi6Q7ZrKoOuSr8wkFj9yQhXU2/GfmlogrXuvcpwiwH7yTTY2gxIZ5XHAcoZhYRXlfTjutvZBXu5NPVuKsD7uJQzKnk4GxCfDf440Zs7efAukpB3kuupcw3B+FGfW0xMp7vgS5j54e6jB3USUjseYe8c6WE+yRP4LJ8ag7u3rsz6QtJLyITTrRMDu9OrqKPDYbRDwM9cYNfHUHeyl5JmgHfKly4gzaZrbN9kasCqukvJUvoVyHHcC+vnU5bHTpPGdI6kAH8JpAlpkqi3OWPfJzWj1t+cRntdzKR5xnagHwwUFdo7FZfpoDu1seMndyCTNzjRXsPeCNznm6+29jZgWQ+ro4gXHntbCTSJ88z5iJtRy4JEfGIoQw1Fbj1k04+YuwjQ2RRfjQFyWV/3aeMnb6R7LS9O0hD8dpM5OyEUsZa6zAyWd4AaQgmJjjcMC+M/vu9k8w18mmZMl5ahYS27iXmjvAsynOpy5Hhe4IxO6foC8Z+o5Q6yv4QMl7Veeba871Ixh2rSfUwZyshzscnyK6bn33E2LcUM7YaY6iL1DIkeRGRnY5M6zFfQMo4exopJ7aGuaAyhi0Kz853ZO2uQNbJrUGiu5hOugrXMNnOz61E3uw7SZ+6uQ35fNiHcXEohv48Vc1pxyAx51TTp0bqqa+CUPrv33vRNjMGCCFPF0KxQyMo1/Ee5pbi2VzT3k0fWj9EFv+6kH8x9rTbOfDzRAvjOjOQBkuMJBWAiMieBx0pZt4gtL7DzxEGP8bY7nVMd5uKOSzWdzrP/WYr7/ix3chkPjb3uSMd6XlH6/eM7efH3DG3kef2G6P874R6eBRFURRFcXt0waMoiqIoittzQ0lrWiduNM96Lp0YdRy8OYHkkHKZjKeDmbjFZpezM7/HF5mpxiLCZc9mstQ+tG+VsS/nIhN1n8TVWbNss7HzqsjqOTKNLeV5z+H2FRG5vApX5qJxTkgry8FNO7eCw8tCSquMnRKPHNQXze7/uC5sj0Ekk4VxuM0vBPJMp1PYSZ9SguyTNgc389BhXMDyFzJlrBuhnEdKOHBxOIFnDbpIO7SmO3bVj7M2vqeU+5xIpJ3DBpCo9mXjdvzUD2j/Vz6LXOExsdnYd7+Jy3ls6NfG9lqAG9vlcsgJIuKXj/zocc5l7KKVuM1zTyI5HvMkWjB+IVFIsw8i3VUsoAwXtxCZFeqNaz2xHdnoUgjfOzEXWa36Ai76tFgO2J0qIr2QlePPIz88FUKEz7TcLcZuOkh8WE4q9ePXTHTbcNRzxj4//kFjZ2ym7/d+g0i0T+QgK3ccYQwGb0TC7tiTZ+zYICTcxERHHxeR0mDkh7xUpMRiFzJLviPz+1gUbTDghcR44SQZn3uncc9F5fTfi/G46DvbcInHtzNO/RxZlw+UIaWvz0NiEnlApoqV/0NbvXYnc+rSOtrn/kGkkv0bOIhxUSRyUkU4fdB1FUmv8k6kBU+HZBhcjax0JYt+FNNMHxlMRSoYsJHAxl5nbB78JO8EEZG5QdTfll8Tsbs+BmkifT7yRekV+sNds5H0yoOR046XMQazjzA2O6bT/h4lecZu/ziy9dGrzM3+rW8a27OX/jxV+G7nezevTjX2N8Ppjwnd9N8A3zxjrythrjxu0e98hmnLmCzGY3wpdZWWhwz95PeQlecsJ9t5WCfPlhNJu7b7IJEfiZ4cDRt/tdDYFxKor/QBIguzSqqM/UYumla4P2UI7aEMoRZSYpinI5NzOn2q8RWXsQc/wHs2+rJjXZJB/zhZzPv9nWIo1cOjKIqiKIrbowseRVEURVHcnhtKWuHD7OIun02isIxakoQFeeNeO5lGdE3WBG6n877stpZ6Ig2yw3CvRbxBpMzX+4i+2eiI+HhrLhLG33bggnsjGLeZ3YTrK/5eXG4iIlkuJKSdjSRfW9xDcsPxtUhOR5/Drbu8hec+Z+819lcW4Qb+h/u2c/+9JE97rMfFM+xINfaP/ho385oSyuwVjLtzKhm6hLt/mT8JqE6NULaGVHbeX+zEtbnQi13/584QedO7jLoIruY+CxJwrV/IJspl8Qtdxj65CFemhLmM2RpGdNwtHVz/0gv0FxGRWyOJvAn2XGnszrP0w6H7HIcd7iJpWser9I1zkdRL0uNVxl67noRg0Vfoz1scSdb8e+mHdZeRRG4b5fozWdTLVOWRHGjJ5h8OqSMuHXkyuYI+eDiROlnmj4yxfQ3RW2GtuKvnFZKEr/M0Ml/PXbilvx/LZ1fjiZaxaUwrxYeRrdedZWy2zp98QOGSy3xmewV1F7gGeawmmHsVnqc8Xg65MSSbOcs7nAiZkLNEiExvJLlZwzCS+Ryb8lxKpc2yXEgRJy87Ja2pY3UMCS9H2pEmTkUxL2acJoIw/Axz6oH1yEmhZzjMdnEv4yOuBdkrZQ71W1uI5BsYwphweTD3tZ6lDeInuoydtHyzsXt3MX+JiEgq0vg0353GDtvPoZk1qSSuy8vmQMg9xUSaRQytMvb8CCJ7gtLpk3KB8uTOJGqyaAy50vs0Y9YvkUilwAgiaKcKOxeZaWcVfXaBY+tFXQ5jYdEeR2LeGauMXZ/EGH9wH1L14zFs7ciqYRyMFnI49KJN9Nl0j58b+9yEI5K6vtDYM8uRgDxu3TqpPD4em42dWoukmdxPnVbMI9I55ZwjemsVkmyiN/36rBfz9Zoq3nennmA+HVxHUsXbj/Bd7TG0a1cy4yP+LPPaO6EeHkVRFEVR3B5d8CiKoiiK4vbcUNJq90DGynPhonx+/BPGbonBNb3pNG7J+iSiDgpWkzCubIIzfWpfxK0VYuFOvWMju+5DXscl9nlPl7EPjeO6j5rJNc3NRBC5zuB+FxGpm4+b+tZqpI6OWcgvE6XIHukTSBodd7J7fkEjMturfrjQJw5xhso9R4jSsR78LveZIDro7yp41gNN1PXRRyc/91TReROu0PMlRMIM9BG1co8/LssKCxlg4DiRHT6rkEryQnnW1xfQFyLLcIlPtx2yRCoyntWEi3O6p8O1HMQ9X25AMs1bzPUiIo21uDDfSsC1O2uU6I/ii0QDDHWguyxP5vtOB+IKDlyKq/moJxEA9ih1tLSeeqx3SEhLS5Du+n2QhOZV4YqfMnKQEOxjRMTV1jAGI5McdXdlq7EvZnL9khD6vmco7veKhYzZzFHGQeK+QmOHhaca22uQBGg9Z+n7t7YhvQytRW6YfMqdyKxyXNYJK4muvLcfGeDNoCpjp3oiY3gFkHjupAt5K8pmersSimzgF8JnpYc5YWsU8453Hc8TmMHfhQ/s4v5TyfeiqW/XWZLPbZ7HmGrxpa+dzyap4J0FXONbS197fj6yT3oPfSH9PLJ9xQDbAbKymBOLfRmDrY6IoipPro/0f8HYY92rJpUnXPhuH0c/afrZS8ZOegkprq23ytgum4jVEEc/bCpEfpxrE9XZH8NcVl6C3J6xlXOW6tc4zrEqRR4KzKMep4o7O/cbu2ScpJjFIyTtyz2PXNOdheSX1uY4zy6K+e31RNrvpl+mGnvpDOarvwxE8k+ILDR21SmuXxbPnD7PYpxdWsHWhMZmzjUTEUl7mvdU3SaeI2qQumsIIBKsehWyb/4wEbCV1Xl81hFA/cNh5LfgRz9r7KRO5ovjFv1mNIXI4LR6ou8mwqLld6EeHkVRFEVR3B5d8CiKoiiK4vbcUNIarsD1XZGGi/evI84Y+41jSAkZlbj0S0eIXlrkOIvl8THu+ZFZSEMV5bilh86QYCymnyPfD8zHHTcy8z5jL92OS3BOKG6tMU+SlomIdATzTD+PIoIjLGyVsf2v4vqMJ+hGxq/yD/tClbGbUm419oo+5KCOB9lt7hHFNefDnjF2tRdH3jfEcnbPnBZcrlNJqU30wMZgpLidHrThhXJcpD6zVhk7PhFJK24aUW3HdrNjfnETbuyBaGSs0kxkLGnH3TkchxTZ5o8rvtERyZawBilp0BGNISLi2sx3LHiCs2l2zeG5V4zQH0L8thrbbkVqsXxok/FIXPZJwzxr2xKiG/oaqLvYLtzpO9chy+YxRCT6EtdMFRNb8ow9koScNNOF+7khtMrYPnMZd6mLsDv7EJeKGi8ZO8gieZjPQcbKQB4u7YAx3O/jNxP1uHwvY+jnK5liZm+jvZJycaGLiPwwAql3zghROt/IWmfsW1rpR5U3I1t2n2W8ZA8TKVlbicR8mzflOXUJaWhOPM9U38A4KPFizoo4wLzW6XKEo00h6YuJkPMapH32hSO9znecueTXQL22/AyppH0282Jkr8vY4530i2NjzKn3riHh34vniVI7exey7de2EU1Zmk07WQFILr0ZjsOzRKRwgLoP9mIevnKQaM+Ao8yRcV9wJEB8CxnEbiZ6rbiP6xd4MqbaXNRdZSr9omQZslzwLvq233QklBJ/2naq+FU9YyHZsRWitwUJqPYs79O5MTzb3j4inFztG42dNk6UXXnOfxrbO4B3y6Yql7F9K1YZuz6GOb3vIPVWvZ5JqsWfOlnXyfUiIj6zHckAU6nTq1HIim2HGIO3bCTyr+c1ZOLxmUjdw0W094xV1FF1KPNC+6skS93Ywvx75Wb6ptdyR7sedp7Pd4+8HerhURRFURTF7dEFj6IoiqIobs8NJa2VtxFpUnoA9/XLN3/A2NUP4P4KO+xwLWeR5O8n20mgVJCIW7rOjzNNImfhTu2rRjIYcLrE6x8z9vNduL5y/XF72pVELAyHPTipPD/IISrgy9W46XNrcMFXr8XdffKHlG1jKDvgC/NJdjR+EHmnIx85ZHobcsivioly2Gj/k7F7fanfcEcE2ryDjiittz8S5Pci7xwRD6fmIGV0NnPWTWzL68Z2Ocpw1o8IiawBXJOJc4mEONri2J0fRmTPxleJ5jh2L3Wd20kavudbiQy4t4D7XDxNvadaDmlMRBovEGEU0480cdM4LlLfoZeN3eRBUrbsDNr5cBIJ3YZP8DfAWA4JEIN7thp70IP2PJKMlLas3XHm1CjXNIdPfu6pwM6g/1/9YKqx40qpu9jncde3LiF6q/HHfLYmms9u8kUyHIknKrM5HZngSD9J+6Y34KKPbkXODeugLdfFIil6344sHH78kUnlWZKGa3rUm7Ok7EJkjOFqIijrbqac0dORWUYO0zdHC3DZX6hi7F8soAwHjhEJ8nAqLnrfQcJIxh3n6O0sYt6YwqEpHq8jcbQ5Emom1HVhD/PcYxPUffUcEmdOO8+cVZFHpGR/NvNo7gXmr7IB6tEeZ8vAvUVIHK+k0obZnshh1ZcYcyMz8yaVJ7ifLQqDIUTCRXWQPDZ1Bf2t/T8YI+23I7/dfoUxHpjM2U/1DcxlwbWcK5Y8g+0QJ33pO2vuYjwGH2MeKGmc+kSSWR9lzjr0CmW8P5b6esIPmXBihLb0W4usWnSJeWyNN+9fzyoks4EZjvMOXdiFs5hnC3amGjvtIc4gu1xOP8iqpb9XVtEXRUQ8lnPu5GgRWxtixxhTaVl85tAA2xA2pvAcu+fx2ewgokw7Wyn/mhg+eyrUEZW74jVjzm5Dti38Gvef8+DvPnhSPTyKoiiKorg9uuBRFEVRFMXtuaGkVXL8I8aeEf8dY4++ycfsYdyPnXvZSe7hcO/HR5FIq7CFXeJ7JpCiPpyIG7fcxvU9o5LPnjrzhLHv8XFISQG4svweJMLjiN/kpFL/UIxrtsTFsw7tx414uQh3/NKbcOtXtbJ7viMAt/GKMiJzDi7F7uvFtT4D9URS/gIpqbGNyIbun+GKrU50nD02hVi3pBp7KAD57eZoXJaXY3AbNwbgfs69isxgjePWPt9PO2RWEoFRm73D2FnB7Nq3yynb0VDcq6tH8ox9aYLd9pFzicAoGcFlKyISavEcHrdx3+pDjqSKcezuzwnGjfqSo/wbHYE3EwNIq3OvOCKebKIKdth819JY5MDKGbjfU2ZwDlnPxWcdT/2ITAX+4bij+39GP7LW0Mf9b0HSSqx5ztgjBauNPX+UKKCLs4n2Kjo/x9jxaYzT7FIigqKSub/nOdp+xwraqb2HZHZZZS5jnxvZP6k8PkdI/pgYjdTrmk0bbF9AG9zZyfOV7iI54dKbSDD4k60kNvVYRR9fsZ05Je+TSGlnG6mX8ePMQX1xSMwZQUhgU0nHMuo+u5o5qDUOaelJ4ZrFg0Q1vpmG1PWZAJ4vdIQo2LjtSHF1n6BNQk8z1oZuqTJ2zBXaM8QPqc9nlPkhIoe2ObxncgSl32eRtKK2fMbYTW/SbhVf7TJ2VTDSUlaXI0HlUrZPnCj7PtdkcE+b5peuIqKCHl1Nu9U8w5zgWvdflOfs5OeeCmouEH2al8IYaS5mDH5iJn1tTxiJXGcPEqE24dhqcX4T4/qD6STb+9pLzFebbj9u7PRDvPu8M+n7V/chC2ckMJ6sKN5dCTW0nYjIMxaS9ieX814rO8pWgAZvtqHkddNni/3pmxM+rBveuoTcvNZiLqtJ/KGxlyaRNHak6mFjt86kL3et5r353AXq7kPy9qiHR1EURVEUt0cXPIqiKIqiuD03lLRikl8x9t54EhxlnMPF2e3YeR6XyM7547ORQ9Z74ULNrWQ396xwvt4zBDuzC43BjkUaiF3MOTZdYfgxI/tIHHe4ix34s1smn9jTchZppSsfWWL6ctxrd1xiN//ZQFx5my+zYz4qDXfh2XSSIHn34yL0CMOVGT+I7HNpC+76uDp2pLd8lp39Ma8jG4g8IFNFaet+YydcJAnj0y24S2NyKZu/hYz1wgyicD5bjzQkw3nGrMujzeeGUr8XUmjzgFH6SH0QbvPOy0RaJKzlPJzihi8YO7eOCDwRkZIu7jWYgRvVbxkRghNdSFeBFVXGTs3Cld16nrpfHUF7/tobd+naFqIkYjyQO2qD6ReXq3HXZ3tR5uMxN8tUE9pPeXOC/8fYj1feZez7QnDpN1XRH3O66KfbPEhGGXmC/v7BcCIrX/H9lbHjmh8y9o5YXOgzb0IaCrGQSQIGkSRq82nX5FJc4yIivcv57v4yXOWBfZ8z9uzLPzd2aR/9pW4NUVrP+eDWvokAQnlhmLljTQF/5/2CKU7mjJA4cyiJqJXWKPpEe+K7I2mdCaHMdhky42AEY3NxOZFMQZ6027Junmk0G5m4oZAtCR0JRMjkPOsydksDZ/ileSMrns2lrbrPOZJ0DjHvBsUSxZh6F/OaiEjvf9LnZziic1rWII/OL0dGqZzPNoHgWMaRtNLHpk9HvgmvQM4OOO+Qtj9AwrkjnUSpzVrCc1cdcrwjwpDMp4xm3iHRSzhTsi2W+j13nIjmFJtop4rpyFXljnPEFu9j/O5KR8IOXYS06dpDnx1cR6LNA8NEkub48s7xSaFOYvpdxn5pGjK9iMg/lvzA2MdPOJLUznaMhTrOBvO2kdC8ViM/rahAKuu5hbqoHETO3FhKv/nXXMq56RzPmuNIJusTgezX5EEk8TuhHh5FURRFUdweXfAoiqIoiuL2/I6ztHCJV8WwCzv0w7hfw87iahq3cCkVHLjT2GdduDutMNxuS35NMrQX7yCqJzyc+3ePOCKoHPdJm+CawrYuY2+wcZ9eFc7iEBGx0jkfZ4Xj6Jc3Alj3xTqiPPousnv8+CAu+Ioax1lXjvO5Vk8g9bw8hOQwbJEYLCeXJHzRE7jvwk6QJOt4EJEQU8lqR+RcaTRu1JRMXJNZ53CnD+XgEp79xh3GPj2d+lpTRxfa7sU9o3fjyjywsdDY64+RhGxmEZF5EwuR0tpGkUmzD7/Ez5evmVSeIJv6thpxlXdGEpExzY/+0JONlLPxON+3Ow75qc7i50GOqKKRbNzvKUISrNw+ImoiniVCxOc25L2cUM6DmirGk0geeCr+GzzDaSQ833HOmCtOxU3d7Yn8FHwz0YrLKyjLrhrc4K5A2qzwIeTCuApkInsX0Rg+8bjlPbbjrp5zJ58dDOecIBERz6t8X28k0W6N/cjbeaVIBQ1+yMSLY5CAG8uZg7bHInV9wSHF7I3cY+ykQMapy0LSqvBj7vNtR871n4YENJWs8mE+i7ybuTZhH1Lfzmz6l6uRthp3nElX9bzL2Fl3IcMurMP1f2IaElCOYyw3lRca22MUWckV4jjDqh0p+GTDCWNnOBIkioicy0cO3htI2eb6Ud8/OUQ7r36IftISShRdwB7aLSuPSFnpYN7xXs080FFB5NjsHvpIVR9zXFk6UlxfwA1fgb8Xfvm84y7ZRIlOK3nc2DExxBF13kQbZD3RZWwrk3btWU4SPn+mTclfiUQVepB6OBrC3B3/JvNhwDrk5vKtzIfh8fTrhalbJ5WnowYZe+Ie5P87dnKvyg2Mqb1XmYPWDjNP7RfHGZmFtMfYGO3x8mzerVHtq4w9nIq8tyeUdq0epa+kOKIJ3wn18CiKoiiK4vbogkdRFEVRFLfnhv681gxcq9GOKIJUP2SmV3yRH6YH4hJe7oG7azQOmaQihIiHir/HTZVwlux8M9uRgPYkkvwvuZNIsa5Sfv6hj+LiGtiOaz3yEhFeIiIDy5BZGqKwo2Jdxk4ZwH0/nkeiL+/LRAhciMKV/4FxdqSf66f80UO4F/MjSaDkuwdp7IBwdk3OELvqwy/9VN4NShzn0owtJQon+SpRai2xtO30og8bu7wZl2pnJhEi5xOQIu4Ipe4CinGpfuwJ+k5/Aq74iy2OCLcx3K61M4hGubyaLpowirQgIuKzDMlxaB8u1ZBy1vFdNfSHhiWU/9QgbZKTiYv/3Ju026oQIn4uLSMaIudVIkr2TyCHxXwOd33npUeMPebB904V1d1IdWN1fG/STS5jX+wiAiWumudfGsqY/fE2xqBcRj65aQ7j8VAxcsjtryFXlS2lfs6mM1dENNKWY9OZB4LTiK7oLCZyU0SkKI8olI5e2iy6BhmjOJJ6nxfF9cWBSHdJIZSt2utFYz/Ri8S+OItTsBpeppw1NyEBtYcgjS1ppO5GqumzU0nDdqSYoS7GZlsmY6fEcf7b3S7krROhSH33hSFRtnozv/xDLc9927w8Yz9XyVhJSyEpXX0UEa53XHQZ+8Vk6ig4ENnPvkrkk4hI+Gy2H4RdYX7+vhfz7oNr6CeHOkmSmP8WSfni52wz9uut9M88R3BV2RjSz9JU7NdLeO+EhSKh3hlNv3jlPLLnVBHWQd8pHyIy2BVOvzt1ifrJ7WFMNd5CP2htRWbK2Hu3sY/GM1/f3IEUWLcQaaijHt0rLBA7t4Wo3wuZjqhEIRquvsoRJScil6MdEmsTnynxQKrvOMwcmuTDOYoJw7RBXRlRtnPvQdIK+hWRrqWHkd59NtA3zzQiw9sLqK+Fx3j/xPczJ7wT6uFRFEVRFMXt0QWPoiiKoihuzw0lrfhTuOO8QnBT/fwOzga66wwuq5cWs36KaUQaeWOUnfbJXX9p7IpBInACC3AbFzpcX/PGeURrgMRjg/eTVOsHvUR/rAomAVLUIAnTRESsxDxjX7jIsyadxIV+KpBd4snTkVY8qpC01iTgjvfJwt3ne5qos4V13P+VD3YZe/Ys3JFhyY7zuYZw+7rWTHYpThVXsh3JvUZwu65pR2o4EJZq7IszkOsaHEnsQuZS/gtN1EvGBSJqBj5Ev7Cfwd19Jge3fFoIu/lDk3melW8iE1V5I4ElxBGRICIS/gNHostc5Eu/6ciDNauo1/gyZLY5/sgAPxmlrTJXIA91lziiX/yIvPBu4rNzp1GezhIknpoxpIjZxZPPdJsKmtMfMXbsANJrzBj1EEDzSXU10sCVm3iexRW4wYNvQrbc1oDbeHUAktaufGSSDIt2KghBY0gfSzX2SRcyhMsRQTY8G+lFRGT4LM+UdT7P2APLeO7BYiIiezpJYjbT8d2vtyBVFnhThprmHxt79ALnMPlEVhk7rJZ+YycwZ531QWIq6CT6biqJ7CeRolc6UkFfNmVIP4bcUT+GnLs28Q1jW9n0zYQz9N+MhcyvrVVIVxtPEOHW5ZDDkv6J8V4xQRLCzbcQFXPi73gnPLvWkYxURG57gu87kIucdnM/yUa7T9JBZz2I1PXWTEJo4xwJFvMDthvb8iYqc5mLd8R3qpib/m4h39vmS0RZ8Q+Ijr15LdGXU4XnDqKFHphLZHDdOHUXm039dPowj50+7UhIeIl5OWItWzgKzhMNezw/lZ+3EXWV50udzChASvO6hPwbnsvc3d/NuFkdjVwuIlIUx/tx12E+c2ca7TTmiHY80UFU38Hp9NP8GKJbyy+xtaPxE8xBXltZWwQI4/1Wb9r10HHKU+LHPBuQNrkPvh3q4VEURVEUxe3RBY+iKIqiKG7PDSWtttW4zup6dhv7q6dxM26xWDPd18b1YzuIqBldRfKlxHiki4EG3Njhp1zGLpxgR3ZO9CJj+58m+Z3fJdyG8Q9y1kuo4N599bHJ5/XMLcblVbcCF2pQK27dJXXsjPcI5ZmkxHFORzzuu/Fpq4ztlTxq7NY8XK4rdm7lu6atN/b5829yTSVRCp7nHVE9bM7/g7m3aKWxty77pbH//QPsbv/sU7hXnyhBKpjvy8/v+DYRD7vXkEyreR7RdcNnkKICArFva8Q96j3EGWgtnUhPdYJbd2KCPtLrj4QiInL+Yc4N2tDMM51rOWhsrw52/XcUIVnsmInEMcOLSI2FZUQ0dHbQ9zZ9n7a1ZyDxHGvjs4HzkUHmeRA1VnMOl+1UsXo/0ujVOfS1wsMkBpuWjBRTW+A4w+1JZJLY6UiyDYObjb3kASSWmp8iVa7OoZ2ubHMZe+29RG/8tIoElw9304eeHyAa45FBordERLr6cYPXxyObxbUhyyzORbrb1oQsU3DMEQkyRPTHI5t51oaxB40dNoh7PDCe6w+EMg9sqmecdjkSmi0aeHeitEpXIil0BTE3FZR9y9iJ0ymz567/NHZYPOenvVpOfU3LZh5dfZXz314MQhpK/mskivYhJLPR01zfdRWpvqKK+dH2RCL+8C6ihURE7A+SWM/7LDJbV8zPjB0UwX39j1PmTXPpb4d3I0V1hP6rsWOzSbbpXcz42jyKxPz9MsowO5q5IzmUeaPwEtsWpoqxlZwTdbySucKrAFmqsYOD3vxf5bP3JTgiV1cSEbdzJuP0YjIJdeeMMC+FCfN44hgy5NE6Iqj6opl/13fQLgfH6SuFta5J5Ym4wFjNSqQPVnWyJkgf433/0RGSU+49iqR3Ko51QFAT22UqT3Gg3YKF9N+Ei4zNy9bDxr5UQT0mTCdyO3H0846n/ld5O9TDoyiKoiiK26MLHkVRFEVR3J4bSlrFPkhX4UO4vF4eYDf/Rj8icF4R3OlxNyNvxPvj7uo/h+wVGo7UEdyJG2x5Kq7Iql78fcG3P2ps7yASY0XvxQX6egHnLd17ENe4iIhvcKGxI5v5XUcy7s7RE+yeb/flOU7di1t7iYt1YnMr9kQbrvyiESQB32x0qcxxZDXXMLvNW304Yyvtn4kimEpK73zS2DOKcGeODSAJnjmDBPHQZuq4KAiX6mkXbZhci/u25kmizuKWsNu+zUJiCvPBNRlwlairMW/kl6GZSHpXg+mDs09MXp+3hhPxsUVwTd/uaPYrJ5BR6j/piBDzJAFX9atcU5F8i7Fd0zgHZms/ySYXTCBppvs8zfP0kNwuqJa+E1mLXDNVFI/h+u6bTb3kOc7TCRojIqOyH1d0XBzSm2ciUSphO4l8eiOXiJK/8d5n7BNhjxg7IpEoje90uYy93pO+PLGI/jEsyCHNsZOjnaxyxm2Ei2iTkTJkqcJTRKAtnUfSulN+fN/fJ9Annn2OZ+pv51mjelKNXf4Nxxy0j6iQYx3Ub/AcXOsvdFAGBJk/nCVNRAHG+CBX7nFIfxttnqM2k2jXoyNIw/nZtNugLxFy1RlEXRVEEUHbvMPxCnCc3ZTZ5ziHqpv7BAwhPaVNR+Z+YelkuTnpv4ic9Y5xJKXzc0TC1ZE8scNm3glqQw6eswTpY7yB+au8GfkmYIA+3DKHSNSZYbybCmqQQZ6aTV0siGIrwVRxoYA68vZnDl15jDmh26KMkaNcf9FCnhxaSL1FO6KKN0UiQ/oVU66ydqIsz88iOmqmRXtXVL7O9dMfMXbHpVRjp8zbOqk8VUmMzYJXkVJHAv+G+wbQ/i1ZzJtdHR839jybuXJ4iASh/U1sVemtYG7yjUWqvurznLFvWrDK2LPOfNXYbXFflt+FengURVEURXF7dMGjKIqiKIrbc0NJK2sUF7dfLq7f8BjsF08j3SxIxE3XZZGUKvUsbta0W4mECD6O2+2opyPx3hiROfUBLmM3hbBrPeY0kSmr5iKZJV1hV//FOY4DV0Sk0Icd6uln0D0GLaKC4qNxibuyiNj5xCV2w1/ZQkIo3wjkkIULkb3OOmQ2mUGEjH8qrthZpbixBxNSjd1+Cve73CdTRulrtMncRdRlTqPDZZ2EK78+ENmrvxtXq28X0WXnAx4y9orHcDm/Xptq7DQf3J1+/bhUmzpon7aHqdN6RzK0lW1ISXEOiUZExG8IGdT7KlF0BzJwzU/8HHksuYL1fd9e2rwuqdDYi7ZR5vq/Q7ryaCSyKaCc6/ck4rL1bEPq9fZAsil1RK99TqaGiDlEkD30TVz6PyS4SMLS6WspHTxbZjn9rreda/o/gh1Wgiv+R4tpG49GkiuGe1FXq+scsrA/4+BqOf1s5ihJwr4bzTUiIh8uJXLmwCB96p4ArjuRQ/uFBv7E2N79JBs9N0I5Z2chb5wpxIXuFUT/aPlvpsBZcUgILV4uY8d6cR+fqc8hKSIiAUcoW8Ktjkioq/TxunHmlHOD9K/lgUQiJnkgaZ5IYSwfLuOzN9cjE9cEMz5iQ6m7feXIPqmOuck3iIiao61I7/nbJ59b6DWb+8bnzTR2Swnvi6xhnqN/IfPo6UjkZp+T3Dcrmj7pP502fPYykVAP/5D+Uv4AjVU8RjvXjlOesFLG+FRRUEl/aR5Gktu3kPfJvC6Sy3YuRra8epZkjP3BvHNW1vIOnXYOKfD1ZJJ5Lk9ha4JrlPtEbWerRdjKtcaeX0uEbfsVogTbo4gCExEZrWU7w1AfY/j8wA+MnZ1KBPClF5lHZi6hzbqiGYOxFUT4rRo8ZOy3FlKe81dSjb3uMnNo+h1EWZYuZBvBoQu8Z5lBJqMeHkVRFEVR3B5d8CiKoiiK4vZYtm3/7qsURVEURVHex6iHR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6PLngURVEURXF7dMGjKIqiKIrbowseRVEURVHcHl3wKIqiKIri9uiCR1EURVEUt0cXPIqiKIqiuD264FEURVEUxe3RBY+iKIqiKG6P2yx4LMv6pWVZ//peP4fyf8OyrCzLss5ZltVrWdbn3uvnUf73WJZVZVnWuvf6OZQ/HpZlfd2yrKdv8PvLlmWt+uM9kfJeYFmWbVlWxnv9HP9XvN7rB1D+7PkrEdlv23b+e/0giqL8Ydi2PeO9fgblGpZlVYnIY7Zt736vn+VPBbfx8CjvW1JE5PLb/cKyLM8/8rMof2Qsy9I/uhTlj8yf67h73y54LMvKtyzr7HUp5HkR8XP87mOWZZVZltVhWdZrlmXFO353s2VZJZZldVuW9UPLsg5YlvXYe1KIP3Msy9orIqtF5PuWZfVZlvWMZVk/sixru2VZ/SKy2rKsHMuy9luW1XXdXb7J8fkIy7K2WZbVY1nWKcuy/tWyrMPvWYH+PMmzLOvC9fH0vGVZfiK/cwzalmV92rKsUhEpta7xXcuyWq7f54JlWTOvX+trWdZ/WpZVY1lWs2VZP7Ysy/89KuufFZZlfdWyrPrrc2yJZVlrr//Kx7KsX13/+WXLsuY5PmNkzuvy10vX+0Xv9fl6zntSmD8zLMt6SkSSRWTb9bn1r66Pu49allUjInsty1plWVbdb33O2X6elmX9rWVZ5dfb74xlWUlv813LLMuqtSxr9R+lcH8A78sFj2VZPiKyVUSeEpFwEXlRRO6+/rs1IvIfInKfiMSJSLWIPHf9d5Ei8pKI/I2IRIhIiYgs+eM+vfIbbNteIyKHROQztm0HiciIiDwoIv8mIsEickJEtonIThGJFpHPisivLcvKun6LH4hIv4jEisjD1/9T/rjcJyIbRGSaiMwWkUduNAYdbBaRhSKSKyI3i8gKEckUEZeI3C8i7dev++b1n+eJSIaIJIjIP7xLZVGuc32MfUZE5tu2HSwi60Wk6vqvN8m19nSJyGsi8v0b3OoOuTY/h4vIMyKy1bIs73fnqZXfYNv2QyJSIyK3X59bX7j+q5UikiPX2vN38UUReUBENopIiIg8KiIDzgssy1ovIs+KyN22be+bmqd/93hfLnhEZJGIeIvI/7Nte9S27ZdE5NT1331QRB63bfusbdvDcm1xs9iyrFS51nCXbdveYtv2mIh8T0Sa/viPr9yAV23bPmLb9oRce8kFicg3bNsesW17r4i8LiIPXJe77haRf7Rte8C27Ssi8uR79tR/vnzPtu0G27Y75NriNE9uPAZ/w3/Ytt1h2/agiIzKtQVutohYtm0X2bbdaFmWJSIfE5G/vH5tr4j8u4h84I9Wuj9fxkXEV0RyLcvytm27yrbt8uu/O2zb9nbbtsfl2h+dN/LanLFt+yXbtkdF5L/kmid+0bv65MqN+Lpt2/3Xx93v4jER+Tvbtkvsa5y3bbvd8ft7ReSnIrLRtu2T78rTTjHv1wVPvIjU27ZtO35W7fjdb2yxbbtPrv21mHD9d7WO39kiMsmlp7zn1DrseBGpvb74+Q3Vcq0to+Tapvvad/is8sfB+QfDgFxboN5oDP4G5zjcK9e8BD8QkWbLsn5qWVaIXGvjABE5c13S7BKRHdd/rryL2LZdJiJfEJGvi0iLZVnPOWTJ325zvxvsCXG284Rcm2/j3+Fa5d3n/zJHJolI+Q1+/wURecG27Yt/0BP9EXm/LngaRSTh+l+AvyH5+v8b5NpGWBERsSwrUK7JV/XXP5fo+J3l/LfyJ4FzEdsgIkmWZTn7abJca8tWERmTye33/9OXlfeEG43B3+BsZ7Ft+3u2bc8VkRlyTcL6ioi0icigiMywbdt1/b/Q6y565V3Gtu1nbNteJtfa0pZr8uL/FTMmr4/jRLnWP5R3H/t3/Kxfrv1BISImSMT5x0StiKTf4P73ishmy7K+8Ac84x+V9+uC55hce9l9zrIsL8uy7hKRBdd/94yIfMSyrDzLsnzlmgv8hG3bVSLyhojMsixr8/W/SD4t1/Z/KH+anJBrg/KvLMvytq7l97hdRJ677k7fIiJftywrwLKsbBH58Hv2pIqTG43B/x+WZc23LGvh9b0d/SIyJCLj1z0CPxOR71qWFX392oTr+waUdxHrWn6sNdfbb0iuLTzHf49bzbUs667r8+0XRGRYRI5P3ZMqN6BZRNJu8Purcs07d+v1sfd3ck3G/A0/F5F/sSxr+vXAgtmWZUU4ft8gImvl2nv4U1P98O8G78sFj23bIyJyl4g8IiKdcm2T45brv9sjIn8vIi/LNY9OulzX/G3bbpNrq9JvyTUXe66InJZrg1D5E+N6O28SkVvk2l/7PxSRD9u2XXz9ks+ISKhcc7E/Jdc2z2lbvsfcaAy+AyFybWHTKdeksHYR+c/rv/uqiJSJyHHLsnpEZLeIZL3dTZQpxVdEviHXxl2TXAsa+Nvf4z6vyrX5uVNEHhKRu67v51Heff5DRP7uuhR8z2//0rbtbhH5lFxb2NTLtT82nFs8/kuubXbeKSI9IvILEfH/rXvUyLVFz1et90G0szV5G8yfF9ddrHUi8sH3ww5z5cZYlvVNEYm1bVujtRTlPcayrK+LSIZt2x96r59FUUTepx6ePwTLstZbluW67qr9WxGxRF2s70ssy8q+7ma1LMtaICIfFZFX3uvnUhRFUf70+HPMtrhYru0x8BGRKyKy+X8Zoqf86REs12SseBFpEZHvyDUXuqIoiqJM4s9a0lIURVEU5c+DPztJS1EURVGUPz90waMoiqIoittzwz08H3nya0bvSn32qvl5Wos5v1H2PUiEaEXOXmPn7SXT9IyENcZuGy4z9rBfmLE7znFgdvI0k7NMupPIg5R1rsTY55OJbFzh7WPsJ7s2GHt2w+S9yF2r24ydvo3o5aJ4Mp2PdR7iA5H3GbOhlGSSeTlDxo6ozjO2NXrF2BXhJAeODSG5pdUdY+yZ6UQAnp4zjWf4Mj//l0tPO5Mr/kE8/+h9pj133jHf/HzD5f8xdpn9b8Yuam81dmpAoLFDrxDQlukiJcqF2ReM3VlJDsDIlGZjN+5wGTvgTuTUK3Wpxv6wa7exWxtyjF05yv1FRKa1hxjbt32msbem7TF27gjX+z7Ub+zAvZR/eCvlLNrIfT4SSjkv+tBH/OsrjX3qNvph0m62D9nxdxq79xSRnP/1q+9OSXv+0//8ylTeiYyfmp8vrCkwdnQrfW00e5exO1550Nj+UZS9fXGfsSd+tdHYdV/lGKyEbQuN7R1Kv46KoG16KpcZ+5g/bb86mj5UW2fO+hUREVczyXuvzqBfTC/NM3ZMFHPK8bOkA4lZ22LssdBeY4efiuPn+RnGzh6kXe0i+tfWKL5rzTh9sDSV3GsTF0k8+4PvT01biojs+s+/N4UubKKvxQT8gmdtWG7sQRd1eagx0tiuJOZIn0S2JqbuYj7y9WMuu7iQ8Z5VRL9+JpP2fPgw82tvHEcpNT1IG+b8ZHIuweMLQo3d3U57PtJ1zthlzaXGDvr0SmNv3XaXsZNKf2LsRfNuN/brndHGTrbohxsrKP9xL5oneANzRU0/74HE09TjF5781pS05/0//29T4PiT5MisWMZz3lLnMnZ1AOmNRlppg7QQ2q/Yh/lq4PvU++3f5V30Uht9s7+K+vE4TW7Wz91H/f+8lznhpvqPGPvcwsnnL48dSDZ2dDDjayhrgbFzTnQY+9UJ3vEBt1O/C5/mmjPpzmTbzMtticy/YRfHjH1vPeP3DS/es4tW0rd+5Rjvu5+4/23bUj08iqIoiqK4PTf08EQmdRo75Wb+Sg3o2GrshFpW1EuG+OtvvJG/Uq4UvWbsVWvzjf2K42T65SOsFvcmkBzy9sIzxm4MZTVbsHu2sQ/ns2Jf6P2yseuTVk0qz7S31vIZ37eMvcKLVfjlJJ5jk+ugsb8TyF85JTY5nO5eznmVxyv4K2pGDCvYok6SV6bOweVw6SJJnrvr+MspOO9GZ/H9/uxOvdnY+afw6tQEs7pv6afMK+JYnY+E8hfck0uo74/b/DXQ9Qv6SFgmn50YwIuwNnyusasO85f2an8W5CUe/MW+6yZPY4996dZJ5Qn6Jzx4nfv5K+TehXgI3wqmT67f/t/8vBgP1OIH8dKEjrmM/cKlxcaeFtPFd4XX8Nwl/HXdHsBfyzV+Z43dGhsuU834Tv5iTTlOvcyI5a/IHcL3+l++w9htofT3BP8Txh5u4/rI+Gqu+XGmsQv88GIV2V8wdkAbx2SNj/CXWWA3bTm96zZjn77E3CIiEpvAAdp+IfyFGNlNP+pLo38VzKBfvOjBeYZrq/EudeYzHl3n+WxFBONuZ06PsRPb3zT2lWTuH1ISbOyahfPk3eBnl6nvxUsYa/WNPPfl2/jrOuNMo7GTY/DGTC+l/MMZ1GljEN6UyHA86wGZ24xd1YKH4FsT9JH6dDwNXn3cs/cb3Kdu/uRXydzD3cZ+cU2esRuKmdu8wvFmXHgWj1DAbLw6Ed6MZatgq7FzfkWfLLmFMXhqBp6N842UYeQI80v6HOaN6IJ1MtXMauY9FeZH3UXvok/VehUa23OCeSZs2j8b+8yhbxk7eDWe0mlfpB8Uvo63blYKXuVzvnhrV+aizlSfYjy67vh3Y79a87qxExvwDIuIzA5kfjzTR50G7Dll7O1Z1PumgRnGfu6gy9hlN3GfOfu5v8d8vE5nbZ47YJDryxYeM/blDtYWnWeZZzfNOeJ46vvl7VAPj6IoiqIobo8ueBRFURRFcXtuKGn1XEJyesmPjcf+Kbi/bgr6krEPtyNvZC/F5ZrTsdTY51qcG0+XGOtkFtd3HmOTYJEnLq6w0M3G/t68CmPf14HbsKk/29gTsbjGRUQu3IIU4yqj6D61jk21N+GOO/o4Lsg1jiPVRmKeMPbBWNxuaT65xq7pRrrq7se1XhSA67Ymmo2aq5OQ2y4Ps7lrKsns7zJ25yY2gdV+Fzd95uJnjF3lOd3Y9ZUuY39gF/XdH4ckEN3D9QPBbLLzuoK7vj7xkrGPZbJx/Kon7sihEVzUoZVsYGz88OT2rK1E1glqoO+9+Sw/7/tL6vhAKSdOZK97wdjdDpeyVxWbx1csZfOznEXqPP4mzxH4Ycq8I4xNtclbcMXHL5n6vyv6Zx0wdoiNHNpazKbloQhc3yPJjOUsF7KE50iqsZsrcPt73Mym3cALyNAlw2wSDEv/F2OfK8fN/JA37XdkPePswD6k7ZBY7iki4pPE2Gw9Tf8PyEAy76gnsKGjD4nuznzKE9KMHFRxmf41PRy3+dVmZM6PBe0wdqU/bbzdsfn5QUHqSb+KVCPyQZkq5gwhkweG0O+KjzCn5DUx1i6soc3jLrKJc3+mY1O5iyCSoJnMa3WzkHM9vokcGHkTMsDPZv21sduuMgaXJTG2eruRdocXIPuJiPi+wUbU4A6eo8ohu6QNIv2UhNQb+5HXbjJ28Tr6ZPE5l7FLE5D6crcwxs8sYjzeUsm7Y3Ccdp5oJ+jGHp/6PHSdHUjDnhHMd42jvNcSlhPsUbebQJljRWxgXvb35iBz8Xu2y9i+/XnGblrANV3P8gyudYz3sYJCY/ed5J07sJ13cUo/m8Znle+cVJ4TwwQOJTXz3ph9L5JWyTkk6hcquT5y9i+NHfJrgoCe3cjG6zU9tEF0z1Y+O+0WY4f3cv0s63FjFy+lvx9s5Civz8nbox4eRVEURVHcHl3wKIqiKIri9txQ0upPw7UYdgRX8WgW0sDwEVyRsz3JE9EURv6IMF8iqjwHkJyCo3DxBfsjHy1OZxf9/j7koFz7eWPfv4jojZ6LuKKjR3CPnY8nskpEJHM77tuBdKSlyxG4vufu/66xXe24eD3u57Nny3AjxnfgTs8fwH1Zdsxl7Ip/ID9AwhXKnBvFenP3+S3Gvl24v8inZaroGiBC6uwLSEib/hYX4f5aXN95RUh9AXOR6Dw8cNkeisGFnBtOPpi4XvrLnECiYn4yXGVsz5dx0Xd++SF+/gqu7s+cxW26ZQY/FxGJ9yWaoGY5fSYoilwO/s8RCbL2Ftp5+7PIrAEOycmj6AfGPpOP639HAS766QvJB1LiyH0xYXP/hkCiYlIKnDknpoasQu7ZvpE2KB93RG0MM9Zm1CEBn24kQrF4DVE9yaeRJcqb6YOPdvLZravJuyX/j76StODHxr7gSb2FHUeSyeqlvQPiXJPKs2uA+nokFrmqLJAIP7sVKWI4o8jYTa8jM03Mpl4GopF99lp8913l5439UijPV9aFTDLvOP03tBTppmEDct1UYi/ab+yzx9DP+5nmJCuOSMSWK0TeDE/DgR9/Hlm1ewR5JLOJPp7cd9rYZ1YgMTWd/LmxZyauNna5J3NWVSxRMXmR9LvRvYWTylOwhHkxwnF80Y4exnD6mCOqtZ85Ys8yJONpnTx3wFHktIzbkTrbY5gHbnJEu3VlUY97m79t7DmF1NGuYKSfqRIoM7uIPm3oIQI2IYO5oieEMVXzMONu1QHatfF56nD8Pj4bfZYoyBTHmIpYSNscbWFs+lUg+9RGMScEvsI4iL8PGap6jO8VEXH5pBq7dAGRjKO/oD/GF9Cud+cgPRfOo++EXSWS62OOrS37Q4nKXjAwy9gnhAjC2W300wWOILLaC7wffNPpTyKz5e1QD4+iKIqiKG6PLngURVEURXF7bihp5TuyhV+JxOVY0EUywGILN9LcQNyMdbXIJ4czSN8+YyburlEvUlsH9uGWbi7Hzd4XjSSx90yqsdOdiQC7iPAI6yE6aOEVInFERA5l4Oa735FAa/AkclrnMnbP963E3dlZRuRI13TkjVlCNM5P4tnBHn1robHtV3DTed921Nhtr+IeXz3G2rNqMcdjTCWz4pHr+m0SxV39R1yeC8lCLh3zq4wd+Sa+9YEFRPAs6kL28vOkLgrj6BcNVjGfjcWtGZTF8QBr65FZqtqRhv5nwxeMnRZD3YmIFA/h/k0aRcrwL0ZyaxmgvyUe5/nmz0Aq8W2jXwTmEA3QuR/3+GeTHcm+7iEqpNJx5Ep8GO7l5k9+3tgeJwt56Mm5E39v/H2oo/4rrxi7LwqJJi0IF/dTUbjQ10xnLJ9vJpIlfhXlGtxBXR3/KO5014+Jxhj/ZyaI4QMIAq9EUrexXbi0j04nuvOhaMaQiEj66/z7e6FEoGXW0F9uiiMaqchC3ojqRG6tb2cOGskhyiOmnjniZwPIddl7mAKjF/JdVjiyXNf99LvkIupiKqmaYD6K9kdeWGW/aOzjccxt9lWiaupcjJ0JL8o2q4iInKNC5FdzABFysWmM3xMbqLuC14lWtOKZ+9a+hUz4VCyS2dXfSvL6wRKkhsgQJOCGIRJdvp5O3X+wlucevuAy9uEHSDgXO4+tC5YHc3bqL0i22ZFK3z6STp2m5JIUNKiYuSz98maZaqpjed8ldvCuPFBCUtfVUcyP8YXMP2fEodfEIQUuvpBq7GcTkerufJ1rysMYs7l7uM/YB2gLawXvmZxRR2RkKM8zctaho4rIyO30x2kXqffDc3imlALK1l/LloKo4/S7iGy2dhQFEJWda5PAcucG+l3GRUdEWQzz7N5e+v6MONp+0NNxLJR8Sd4O9fAoiqIoiuL26IJHURRFURS354aS1mgPEVjRV4hg6GrF/dw3HzfrvnMk95rzIG6wmu24zoatVGMPOE72zd9/t7Ff/xRnqawuIylelReRAyFFyFWrU4gOK2wl+ip61uSIirB65IptbAyX1EW/Nna8B0m2StOIBKn24QyYpUNIMefsl4ydEM7OcL9molnCU9nBPtiGK/7UHOSWe88REedqwQ0q8oBMFfYgrtPgdYXGLm0h6aEVhPs+chDJwq8cqaR0Bm3S4sIV2u+9wtjphbhRW0aplwXTiXjxP0j9bhdkv6FVyDVRw8ieXs8gk4qIxC6tMnZ3Kvfqa0GmSZtNNNaxNvpweyLyyJxTPOsrgbhj5ztkoy7H3wZX9tDH7h1xnOvSjWwU/XKXsXfZRO9NFfWrkF+aRh1STCgyVt0hzhuaW0n/ql+NBBLW70i0Wct9Fi+gzxY9TRkXpSNvdP7McdL4LCJ/8s/Rfz0/j6yQ8VXu841ZzgSkIsvuJWHizOP0Fzsc+TTgOJJG0UKmrpD1fIf/EHNQdDHPMdaOPL3hPqIvI9qITDpYhiTQMxvZoGYv5y2FTFDmR2TqSDpL+8T5ErHZPYhMvvtnRKoseZhyLvnGZmO3xxYae+EiIt88/JA4auOQf3/ZyFz2lXrm4KoRJITRNKd0xXaDrF+S7HNW3sZJ5bm4ic8sL+MMu5tXM492TqeOe/6TM5rGW5BWI578lLFfvpeEePftJrLJew3SZbLjbCV7O/dvXcj4ba1Bwo8PrJKpJqUPWa2yFym8YDN9p2Qffbmlhmip5NlIewO93Ke8xnEOVS6SfTuBUlIzzjzjc9cqY/eeYbyfEuTf+dmMuYAf8Y5OuI/5TUTk8kHOi6yP5b45rcynEa2UJ3KAOb6o46PGLkz6lbH9j/LdZclVPPceJKrWz/A+mX0YKfn485wJmbOJnw8lOCrjHVAPj6IoiqIobo8ueBRFURRFcXtufJZWLNKA9y9x92Z9HKkjoJ1IloogZI/RE13G9v8QbqfcQySr6reRxmpufcPYG14miuBNRzTNnE/+jbEH2okKKbyAy27TUs5MORiHW1VEJOEicpJXHMmn7H6e2/bP47kv8t2fPIEb+NW/x2U3+jgRCLHLcRs3VVUZeySC82De2o0k8LVbcQPui0LeGmuafM7QVPFSE8kTE3ezG97lh7u0LJmkVscqHjT2HRkk04qrd5zvsxgXaWcVERjd8bhmg5Jwj19tJupu5KNILgUV3OdSJ9FOGcVc051PgkQREc9R2rexAjfvg024NnO6kGb+Nob+nHWW6+vzcX372Uhj8Ym059eaiWb59ytEFZTMRvYNO0I9ekbSRxYPT33iwavV+43dsAj38MLhFmN7zaLfXZggQiJwH2Ow1x/39YZQ3Mlbxkhg+JHVSJh7HW7z2H2cQXZTUqGxG1uRZ4J+gUt/YJR54LZm5GURkWOO5IErF33F2E/WICfdfCt/ny08Qv0GplLv3UlEV40VUWa/aMb++VeRyTxmrTL2xgu0U8M49/eZ9bKxq/Y4I1g+KlNF8QBJ1qo+g0SX8AJ1/y/d241d2Eq/vrCQOTgxB4m5bxxJtscTecTqZCvBoxZJ/prjuCakm3YbP8czWHOQ2zruvM3YSZeQPUREEnyINK0KZd4JLUKiy3yVMdW7kuifE40kxxvPZL7YkFxo7NFAInUuHuDnffczjwzUMt4zCtneUBRDffX08WxTxcsB9J3kLF6x/Y5zsoKGnjL2+uXUSd0oUWnVY0g6obnMRUPPcP+FAZxrGOlD/90yi3H6tVrGRPQu5uXGNfQPT6ZZOTzdEaorIhGHGF/TPPl8RgjbSo7O5jsCfog0Pv1zhcYe/MKjxu5fxjskcjHz+mMx1MXTVbyjL2TwTGEPct6jfwprkaGz3P+dUA+PoiiKoihujy54FEVRFEVxe24oaQ22swtb7nzOmGOvcZZW4HKSiYXY7JxviSNCwv9NoiKKyl8zds40ZJUDLlxi7XcTXbD8ADvbiy+RZKk1ClesfxzusQuFRC8k5ORNKo+d5vh8syP51gpHlMs2oq7O3sLnUzNJuJW8BRljKBs5ZLjxCWN3xhId1Gbjmrw5g8++WogbPz4VN3ZvoyPj4xSS6UV0wnQ/XN9XOnEdbn6Z3fpXCpCxpgWxNt7b08VNC7m++zySyKx83N29e4mIWhNO9F7RbiRD73zHeUgV1EV4AG7vdE8kGhGRdm+ieeoi+d3P+AqZNYBrfno1ESk1H0FeuekkP2+pJ7ruUCURazfN/YSx9ywmwijmlyRwbKJ6pSUIuTYhnLqYKmZ188wdZ6ivPi9c/aHVJPdKXUf/DT5EtOPyWNrsZBJ18uUmorcuf4sIJ4+/JGrmjDdRMzEogVIQjdt7Zyj1/3Aokkl4HxKGiEj/GJE5s99Err5vyV5j19VR5vo0+k52If0g0pc5qNKPc3/Cu4gOSlpJtFioI5HggUTGfl0nst/DOSQ53XkX95lKHvUjbPTEi8wRY81M0VvvoGw+e4hU8UvDxR/exDz67Qnmu0X51HfN7lRjz8hCnk3ax1jeFUFEZMhGZO63BtnakH8Oyaj/rsl/O/fuYA4LKeE5AtcgxZWG0G4rnkNiXrOJ6K8zZciSjTZ9O+EqkaUzbuX6lmKe9UyXIyldHFsJYmodZ0DdTBmmiphE2izCi3qvjOZ7A4P53tIL6EmHpjFOP9NI27TEslXjsh9z3ZuLkPDm7aRtHtzB2P9hBFLX3HuYZz1G6GcXfKnbiIuMORGRnIIuY5/oZS6oDieiNf7XvONmNCN7Fr/J/FhzM+/sjCbapuxn3LM4ijK0j9HfE+JJeHp3C2PzjXrWBzFB1N07oR4eRVEURVHcHl3wKIqiKIri9txQ0ko6jeyxczMSjXcJkQp+HiQebFtKlI5XOZEWQ1G448bCiewoqcGNPeMAu9Prb8FVtm78B8Y+Ws8z+HThgkuxSPg2GriZ5/kWSetERArWc6ZTePJfGLv5OInnutbjRvTsYBf7+NUqPluNS21vQpexNywm8iRxHy64aOH5WgORSVo6kQ0GR3HlpVtEEUwlg5nPG/tY+xpjJ81k3Xs2G0ln1HEO1dY63M8rBylDczZRar5huKuHz6NxtKBKya4wkkTOOX3E2GmO723tIyJhh0PSGDpDvYuIbK5AjlgYi6u2uAEpNi2Z9jxcTIKvnEt8xzc7aavp07g+M4poI/+qrcYuH+OzIxZRTnk1RKO9EUOdel7ke+WzSBF/CBfmIxNEDuLWduG5F++wKmOHnUdve3kFsvKmJqJXMvfyzMd6kXxbFxMpk33pZ8Ze80Gkq+Mv0zYRPanGnh6Ie3t/gbfjGiJ/RETOXOT7JqbTHkEHiNpojicCzWMecnhzNZE2Y+1IKZ1XcOVvyGDsP1+OCz1kEfcJfI45IesDJMv74R7knQUBJLabSp70J3IstRvJwmcVduNOR/Th5r829vTzHzb2henMNesuE+008ALSil8OA3L8HHN8+SWiRlPvRjIsfJL6vWMVCQI98r9tbN83Nk0qTwV5RCVxAfP5pSuvGjvU515j75mz1dgFNfTJxji2G6wt5lymc7enGrv/ONKMTxz95aNNSKA9dYzBmHlENj273WXsRz8gU8MAkrfnJfpd1PxPG7tulMjK/Pkk7Zw9Sv0eTWUw13bSlutCaJuOUtryJ44mePgCc2N8C/UQ25Vn7P6WHxnbZzrze2U7kreIyNHptH+n41y15SNsH+mOKjT2/4tjLsgJR2Ls66APjoc7+nU0EvZADmdy3X+BfnBxDmP2qVNEGWYs5ruO7CPS+53SgqqHR1EURVEUt0cXPIqiKIqiuD03lLQOpSENzO4jcVd3Pq7prqu4u24t+oyxT6aSWOnWw0gdr65B6rgjGxd1SZIj+d9/4pY9suwjxm72YOd5Vivu6j6b6IJLa/ns3EBHNiURCatAQjo0jAt54la+u/slXIS3f5Dv873MDvNjt+cZe6k/VXjpuc8Zu7icchZ85UVjeziStcWfQ4aJyu0y9sFVq+Td4NnofzL2PwR/3thj+5FZOjxJ+rfkbuSnY13IFz3DSIuXD+PiX2vRDqcfdshNFZzRE/J97j/6Wep95z7c0mnj1PW6cdossG1yhEzbMFFCZYnpxo5dQruf3oNsmp5NJIirlLX+ynHaOUWI/hg/gVQ0NILbef5mZLaeK0iDZTlIDsFZuKwDd+OCnSpCSlKN7ZFJlN24n8vY7b7U10ArUs9dt9GuQU/8p7HLV37J2LN6ka7Geh4ztj1GVOK+Z5Cwwy2iJQ6soP3qknmezx7hnLrjEcjIIiIPOCLwzgUjY0TchiQw8zTu9LbHcdNHpNCW6T55fMda2uxy0SpjVz6KRJdWxP2TZlCPC0ooZ7dfqrFHRifLqlNFQSLfkT1CBE/JHvrs/AikoZg+JIjyi5Qhb5AI2vplSChZ9d8wdnw489GYI6qvJ5z56Mogsk/QWmS/g9O45u436C8jcUR0iohcOcfcXuWQhgcWIl2uuEgEVm0M75orQYyjpHCkqKpRxmbCa0jgGXFE/BxcwDy1NbTK2J4rkUcq3uD+t/kiQ08Va5qQn6YXMC6eiWW+uvUXzA8Ty+j71TaS1nAQCQZXpvPODfk6snvvfZT34ReRuRtmO7ZLBDI3Xs1kjp7RwDzeTBXKB30OTCrPU1WMr7yjtF/75xxnelkk/11z+EPG7ljOOA8YRYqbiGX8fuAJto5srUP2GklmHKQ2UV8pDF+J9SNB6oro9fK7UA+PoiiKoihujy54FEVRFEVxe24oaWW1kDRoMBufV2gPiZ7yIzkfpCwLGWuwClnhzdXs1G7zI5nQGzuRyfw2Iml0fxo349yL3P91h2wxfJxIk3Mr+fm/P4M7/af5k5NK9UdxXU4YO9FrWpE9vD7qSE54DKmjofXLxg5sQdLYnUiSxMUOF+S8R4jkqb6I/OaThcuyby6uzPDuJcaOHEJOELlHpop/buJMoNgKkuEd86OdZQYu68FXkeXClxLN0VhKHWVl4h6u8CJiKf3buJ+70klC2XYPUkFNMdcvisI1WzpMX+iKRmJcFMH5MCIiDQF/aeywPUiUYwnfM/asdqIIu/JIghcg9IXovbjTW9ci03QMEDnYs4azgVbt5bP2I45nFaSY3l/z3DV30i+migov6uvWESL8siPos7sLcX2PLEdWrv8OsozHir8ydtBBohwqvGmb1hx+HjyONJYdSlhIRh8u93+pYq5Y9xr9w84lKuTYWepTRGQ8a7+xpzUR4tPzLO0nYdw3bojyNMeR2PJ4K+PRuyHV2A0dtNPIXsZjWyjSy0i5Qwp1JEm0Rylb00z6sshjMlVEhdO3a87dYuzDs0lgmRlPYsSAmluNfW4h0t3owFZjDz3HfRLnMDf3bEfuqL2VuvPxIGNnYipyaOSPkSIqopnLO7yI1i2J3zipPJsGiKqpCmV+nXgNmdjHC+mkbxzZrCUIqSR7iMjXMUfe0ayZlOcnlZz1dPMZ9A6fWqQlK5h+GNB33NgjkZOjBaeClxPpXx4ZjMcNJYypS6mM2VEv5tMVqciT/3qKNuj3IvpsaN1+7u9NeefHOr7Xi0SWw7XM4zl1vB8PrURWmn+Uue5KCFKXiIhHF2O+ZiZt2fMmsqpvxmeN7bdoq7E3n+AMrB8kUs5xx9Ljrc3cc3Qd43H8HOMxz4uI4dp4ft6VRF8O38s4eKexqR4eRVEURVHcHl3wKIqiKIri9txQ0qq/tcrYI4OsjTa14eJ9YjXuxyX7cNlVLsBlF1VJMqE1wu7/E2FIKf0HccHNvEA0xtUPIxMsOog7tbuAnf8F1SSwO7SAXeQRTbhJRUR8k75v7NGncHd6bmaXeFcQrvLPN1I9+yOIFtjiUFaWprB73Aoi0eEr48h+f3MTUUq9f43UFbrpBWMfPM8zfGD91Ef1iIj0hDvkjmra8+MdXfy8gqirIzcRVTPj21uN3fYDEpQd3k1kS6YnLtULm3Bdh7aTMCw6lWiRkAbkI1/H2UjxBNpJ3I+RQC88hC0isrAUSau3g+i3CQ8i+8pHiQrrHsEF3+ZZZey8jbiLy9pwry6cw67/PelEA5x7C7lqxOJ7U3ZTv/EeuKN79zqiyzhW7g9iYSwu3oFenv/FEWTi4/civ6ytRcaKTj5k7LCrjKmTixjLrUXU7a1D/2rs1zKRLiLGkAK7fOhPXxDqp8+XPrHDl+iw9V1IuCIinrGcV1UcQ5ut6SJq4/FBZKaNv3BEtnyP6KX0FCQBuw85PHohsuL9vkjdgx15xh6bT31dmOD+QWG47nPbmOOmkpPBSMzT05HfFpRT5vYEpIXzbY4Eba7Nxm5uIClo7XTm18xq6vdSPrK6Xct8mTUNeeu1NMbB1mWco7gujjPlVlhc713rOHdRRCoGmF/rupCcVsYjK1+pZR7xXcd74eZLvzJ235U7jF0fhhRVSfCTfKmKPnKolH4V57PN2KWj9JECF89zvIP6eqdkdf9XHm2iLiYOUK6GxFXGHopGfin1oK8taOc9cHsqktPIMUcU3N2Mj5xo5pYDP+cctQnv7ca+dQNSZekFxm/XMDLW0dWMldrWyWdSzXTxTliWcqexzxwmAiu20ZGkd5Dx0trAvL6a5pahYd4byyp5J269RL/p7iCqra2dxKlhNXzvkWXIW4v+Fzld1cOjKIqiKIrbowseRVEURVHcnhtKWre8hGtuWwbnOz1/L26nLI5nkvq1uL7mvcWO7JFbiWrpONpl7DkLiAgauQv36MX/ws0e1Y6LuncBMsnEQT4bH4kbv8sbV+ySmY4MRSLyci1JttauwG08lII7L6eTBFVPZLIePHQVierRjSuMfdYTqSsznMNYPnOp0NhnjhBd0pmIi89LcP31ZxDV0HCVhF5TycixPGN3ROAT/tXq14297CJRVNENrxg79RHqru4CyatSAijDpgp22FcmIDP69RJps7sCV2Z9DO767GNdxj5TgIs6arbL2EsvT5b6iodwr4fOIDpnTwvS4s0rKKe3H67j3mLcop1tuLjtcNzCT3cTYZDSioTkkUOETOYOvtfXB/dqdS3ySMwi3Pgi62QqcPlyzwMlyDUzUknI9qUXcDP/YgaS8SKbso/cQxRMz5tEfi2P/omxmwOZJmYfIvIrq8oR2RGPZHZuJpEv0V30leYS6j8p2SkliAQ55LFDjciEy7L4jnxH8xf+E1JZnPzS2J7ByHul1ZQnxcaf/rRwBtDSebTTuR1Inh9wuNAHC6iLqvobTpm/N9EnkPEPxBFRNO0WxstoIZGSlRuxpYpEgv2pJPMcu0RS2B1tyBqeH6UvL3jJcf7di8heG3agKz98K/PRqqZ/NrYVinQ82OGaVJ5cx3wWdxEpuv4TlLNqFMnC4yoym98ADZ2axZxfa7G9wfcE76Ct0czfI17IeD4z2VZREkKk4ZIxynlbKPPdVOF1DjlpdxKS09VI9kLcE8+zVUWw9cI+QCRjZ8ITxu6/Db1m1ouOeSyZ/t7j4l10kz9bLd4sorxjdbyXZ3lRtyOnOdcsaRqRXCIigzVEVO4P530s4UR/Jbczl++eh/R6aYx+F9vOuBs7ynaJ1Ju5Z9ZJl7HvWbnZ2Ed4rcvEIt79EScoT0QPPxdeDZNQD4+iKIqiKG6PLngURVEURXF7buifHZjD7ulMXyQgv1+yi7sqCvkpNBA3XVMq8oZVhBvTfybyU/thx1b7N3C/9y3luzI6cMc1BeLG7voUbtlL7URO3NWNi37f3slJpfzykJbqL+NCr7K4zi+OyKmyINyFa4eJFiirwF0b6EgA9noC7sh7on5s7JbMbxp7eq8j6ZsvUT1tMbiWdw4gUXAyzh9OcmKnsZeNItHV77kPOxKX+L7dnI+yftlPjR1Y7IiuC8C9ui+YSIi8IkckyCiuz45ZuFHzmnB9Nk1Dcrht11Zje0QgN5Wt5tlERBq3EMXwWhLXPRiVZ+yeoh0890Fc6+cee9TY9xxBiv2vPM4A23gF2chqpu8VJyAndI3T/3tTuow9lMSzFfQS1ThV1NcSQbZ0PVE0/SeQMd4sQBp5sB95smF1qrFHy6uMPX0uZQnr4bNnjzBmP5SPTLzDoj4XjdD2zSf/xdhVCZw1VhDA9RltrknlaffsMvYnApFxuhuRmeI3cc2sauaIQ6eRDYI86Zv1w/RNyxeZdFMooXLWISKC8ldzn85q3O9tPpTBc+Vkd/9U0R9CNM+aUBKbBj5NZNvW22iH2xr2G7vH5kyq4Cqk5J5RxuDCO+iPO7cx715xRLUV5yBPf6Kbeq9HoZGmxX9h7Bl1yLkBwZPPMWq1kNns+cisHjsYX/MDGV+dHkSLDYx90thvOt4vcVXc/2Q+/8guZew3zaQeU59Hkk6b+S1jXwj6d2MnjyB1TRUHZjB2RvKp6zuP06/bzzL3+TYQNVj0eaKoPC3mjRlniTjr8Xf03wzuGT/M/FgxzhxlH6ION2c9bexnI5GxYv3pN4lnSCgqIuKa/aqxzw0QIbY0gTOz3lqNNLjgdbZIpEXxnq50jKOku0gcfHmAflfmhTz5rVO8ExOEvux7gISaMXcj1Q+M8V3vhHp4FEVRFEVxe3TBoyiKoiiK23NDSWvfWdy3d9q46Qoz2TL9wdPIJLttdpvXtuOa2+jHfdr9ca37epDMrfzLSBobn8T19bM2XPQL25CSXMU8el4C7i6PYiI8gudzfxER33J29rfPxh27zKPK2KX1uH7vzsWFHDDA9dVJjiRLvSSQshbhEn+1aYuxNzgSObV6O2SsKOSBJceQ2CoScRtOJZemITO2bne4TmNwZw65iEhZEEV56qIcif0cEQB54Zx7drka2aepniRhrYuIlklrpPx2Im3Yu4UowKN/mWrsnjp2+d/3wuSEWOcWU38fCcAtPNKJi7s2ie+evQLX/4LDSCJberhmyUn6SIgjquJAHVEFCdPpVzUz+eys7+Fe7cgiCql9jLJNFX2eRBcN78adPHEzkSyBwURO7HiLaKk5l6uMfXUE93hI8a+NfTI61diz51JXDR70oehxIpmGK2nv4mzOsRlfSNSjxyHG/luOpHMiIiH30X7dXshjqcdJkjjeT1/bVYV0Pc0mWqg5ne9YkM3c0W0THee7neiXw9GOiNMGXOhXw+lbQQtp1/hyzmybSk4OEuHX30s/Hc+i3RK8mYPbXkcmGvdGJl6UxBg8NEwiyUunkOgSs6m7XseZZMknOberoaXQ2D7TXcZeNh8J7IlXaOfFY8hEIiLtPsjk3plsaUjqJ8K1JArpLu0AkVlnFiA/FvQhUT2ZT3nWFvPz7AzGYI5FFOxQDn3SyvyisU+c450VFYg8MlUEtjOXOxMGvjzEfPeQ/yPG9hp/1tj+p5CfjuUSdeTvj7Q5mkV9xtVw7lX4DpJR9mxA0grLZx44H8H2jbFQEoTGDBLtVD0NiV9EZMEIY379mGMd0IsslfMqz9rhTzsFeCDpbRnmO+446jL2yHzmrHXZfJermzlh+hhSaL3rB8ZuKF3F99bQf4WjvSahHh5FURRFUdweXfAoiqIoiuL23FDSio/AVV4/4EhQ5UPE0usZbxo7owv3cFsyrrzDQbhlL5WzM/y2FO65fiu7zZsKcJuGd7Br2z+LyIGwWkdU106uObySqAuXd+qk8tSsxW0a1dXFzztwx11MwD066HD9hy5FlmgtIXqtPxx39y3VSH1t7bhcf11A4sXYbiLZZn53rrGfXoDUkzpMfU0lvq+QNG7wESJYpm3FXZhxgh3zow8RRTGwjQibHl8in7bEE8kWPUSysvwlRMvUVeBmTgwikmC8n2i0efG42c/tQkrs8b1g7CfWzJhUnuUHSFYZ28nvajfi2vXopk++Nsz6PjeJ7542jjzQW0skX3k7/S01iXuOHeE+YReJIryyEVdzRinlaRhaK1NNaiht+VYuEl5GBTJkYPkPjR2TgSu7b4A+G3Qz/Xo8ivb+yDTc/pXHKG/JW0RwlG0kwqU/FMlzZjsJ0CpfpF3aJ4iaGXpwchLJUg/qemlXobE7/V08qwtZMS0SWTFjLW1z8QpySFUwz31bHXLY96O5z4NRRCL2XGK+i1vGGG/9HnVkL5wcwTJV3Oei3824jIx7JhgZ93IJc97YKOOiZ/YyYx+NRxIILmEuOy9IiI/1Ided6Udm2JSEfWoTZ1J5E9gjx7bR35cH7De269yDk8rTtt7RB6odSRIDeF+0tBHZlT4HeWuDN++Xy1WM0zU13CcngTnr0giSyMg+R1RQ+geN/fFCth58YhFycPuph2SqKVuINLyqhMjdhCy2OZRe5Xn6NjAXdwQjaT3YgTR22SHXzLnAu6J+Nts8Oh/7mLFdjUR1bVlEv5l1kDpMWYTkF/sz3lEpd/DuEhE56E3/CujkMzMGSUZ7MpioM1ce74raTt5l6xrod1H+vAf8yyhDVQkR1/0r+PnpOOYHjwrO8wpxSJ4NKbT3O6EeHkVRFEVR3B5d8CiKoiiK4vbcUNLKSWb3/7lBJKfy2bhZI7dx9lB/GpLO7YeIztjtjXTz1U1EvpwO7DL24W+7jO2zABd9VDMSUPiZVGOXjCCH1XyKs4HuvJRn7Es9nNUiIhLjeZuxB8ZI6pTSjus3JBY3Wn9QIc/U8ktje9UQCRL+ZZLqXX4B6WZGNjvg//J5R9TFHVxf+SHczwWjuLG9O3H9TyXBXkSgzXuRMvTfh8vy5Iu4QjOO3mPstxJwQa6Kx8d9cy9RIQcHcNMmHCIyoHCMNqxZhDvWOkSZX7sF13VJAH3q3iL6YKU/bmwRkerFfP4tm3b7wqnVxo4PLaQ8c5EuZ/TT5icrHOc99VUZe2Y60kd7D+7Ytlm4/u8txQV9ZRgZy6sQaan5gf0y1TR7UZYNjqR9R8KRmVYNfc7YR/uRfZcX4uJ+fpyzqh51RApdOJbKNfOQCR5YhJTyQD6y1wsXaPueRPr+hA+JNmMaaPu4IvqHiMjMXsqzPxb3/bxIEtLJDp77XD6u7MQt9J1Yz68au3s+CT+fO8ln8wsYp3vTacusRJ6v4/gjfG/2f1OGc4vk3WBPNH1+SzlS7UIv+nj2TKTkhulIiKtOMheeO8ncubHasSUhEwn0dQvpNSQZiarTcd5W7xUSk3bcyTXTq+gj/iPcpz55z6TyDJdRnoJsJJvWK9Tf5nto84YXkCL3xB4wdvo05kLPS0SvDvpyn/Esokz7B9kykRvA8/0og/lrwX6+q6Vn6rcPpJ39jLErkl42dmon/do73BFB3Eck00EfooFTfZAhi8KIdA68m7Ysqzth7Nx6xmbiBFtK7j6E1DPaSeTi4NNELrZ8nLqqLpwcVTqr/RfG7sz4rrHtcX4eH4J0PdDBc2SUcI5iaRdSYnEe43HkPH3ZdxlJC1cMINFd2Ed9FfgRRdaXRn9sbaIfiDwgb4d6eBRFURRFcXt0waMoiqIoitujCx5FURRFUdyeG+7h2TZIeNmqEPZFtB5B75uVxR4LbyHk7RdZ6P4f2ofe/ssL7Fu5t8dl7ObPsfYaP0mGxZhBRwbdCXTMvhR0xsRdaJ17ZrJHZl6NQ/8XkYPBZGReeQU98VQqenBaLGFxLQdmGduV+c/GLg9lT87CE2SXlgT2MHW2sG+pZ3aXsYsr0bO9tqJ7RjyGTt7WMfWHTYqIuByHD+44QNjpgp/TVmuCCAk9Y9M9cmd/39ghLWTb7N++39g3/xfh3c++QDlDkthLYF3NM3bOwipj1z5NG4R/lLDOK8k3GTvdkf1VRCTGk/6ZPMLesCPpZOrNCGKP0Y42+u3ELkJZI29mD0h/FRlNS1sJFd4wQMj27hBCnC+uYN/D0TLCvdP+hr0hKQfpU1PFsuabjb3zFPtw5qexf+b4BKc+xgWxT6s4iTGYk8H4rdpPeftC0fcfPck4atjAdwU8wWc3PkgagkPHmAcSBtjn0+zDNbEx1KGISMM4YzM7iLZpT2dvyLxq9jqsDiaM9o1V7J3K3c6eholVpCSoSOWQ36zXCEXP7+T54s7SbwbmEiY93st3NYcSfjuVhHeTwXmJH9mI7ThSdFwpJEw5MY59HM2Oz4YsppxnIhizVXMZ14scWXU7+xnjlY7s4F3tpJuY9RL9NzGx0Nh7pzNnLcmn/UREhnbRB87XUMfzC5gXml5nT8uhZMLDH6ghfPu1eVwTdoLvG3XsEfWoZz9ediLh8PXfIGP/2sfo88UxvC+spczZU0X1eco7Moc53vMke19vcRyK+kQSexN/cIZ35bYkMhnPdxxSnTBAaH/0LPbIVW4hPUPg7fT9Oh/6SsRbvFtK7+e70hoddRueN6k8URnMccca2T8zLZd9Mo0uskWHlpC6oaeTsTY2mzXEWBH7bkND2TsXEE9b7q2mLfMbmZsu3cd49DnH3srmcPrEO6EeHkVRFEVR3B5d8CiKoiiK4vbcUNKaP4p7aWcXbrrQ9ruNPTSO23QgHhfirJmOsPQq7nnLPbhTKw4iP4XWOkLgPb5g7J5M3F3JZ17l/p64JTuiCGVzReGKbdtNyJqISMFcXIcrInDxP13FdwwfRLpIWYHbsT+Ye3nkIp8k27gFh0dxI573R+p6zguX4m2O8Pacv+XwxaFThBH6ehA2KfJpmSoqK8lumxxBmPKB3FSuqUFCDM0hxNXrLcKIi8d4vsRFlGHkdWRCvwiXseMDaeeOVNr5lQgktiWOMOOQMsIUYyNwa44nI42JiFTu41nH15K1NegKbtfKSlzKa8P47tp+2qryCofdpazgOzoc0syv0jmkLyePzMm+XyNUtiCL0OwzP0JmmTPTcajdFLHNhbt7OBpXedBipMG5v64ydkw4YfsdrRwGGmzzN89rtyMRfv5lxsrWVNzG0/v4rkKHVLnzLGH4AU1IhOMLCPu1Leq/KC9vUnlu/xUu6wv52MU2YcnhhYXG9ihiTCVHI6V2ZVCezMeRK9KHGUfjuYSunwtBompzHDTb7yLE1bOBjLKDycwPU0l/9AZjnxTa5/YG6tgVSb1c9GUs14Ui+84rYy6sWUofvzmWTLXHjxESPMebeaCxhLlz9mHqpTsH2eSZCMbmHVfpU9WVjmzKIjLogcQ1TZDETg0xFjIaU42dP4FU+uJaJJToauag9CzC76svUkcrU8kOf7qU8Rh4NzJW2wSyvec0nq31ytSnALnrQQ5qjQliXHw/hGf+dQvvytE2Qvj3389c6fMM75n26WSx71jjMnby4zx/dAbZwf36kJIW1RIm3jaTedznKP3J82MsBQKuIKOKiFSG0l8Sykkl4LeLNcFNgcj55+LZ8tEYzBzf34qMtcEXeXov0454liJXTWtBwh36EH2orontLKHJLmPHhe6X34V6eBRFURRFcXt0waMoiqIoittzQ0krsImolqgQInOC7n3K2L27cV919CBL+Kfj1t64CFfkL/COi6vyL4w93ZdDydIyyU4pjkzLbd33GTs1CLdh9TncwX01uJzndE8+BK31FSJDXroXd57rWSSKGTdVGbtrP65Pz2Rc+atzyNpZPYZr+VyrI6rJogwfGsAtfVMA/ruzJ3HZlXnlGXteHS7IqSSpCxngdNQuY6+LZ93bkUM5Z10lI+2EP3VUmUokUGAD9kgSEsICfyTAgBHcoEPdDskl/gU+G5Nq7EUVPMNbHUS7rSvtmlSe4VBH/zz/HM+aj9T1egOS1tUm+uEdj/EdswtxNY87IuTyUAGkI+AlY/s/gfQx/A+4lOt+ioz1wFrk0LOnXDLVzPHE7VzYjnt4aykDLGcjUY324zxzzkwkoDOOsnfnIDeciKAvD3hTz6M27XfhdsZXz1lk4eUJtH3vOOMsKQD70M6CSeXZmsV35Dbjvo4fJcpu8H6iqAJLkdxW7URiffIRl7F9KpFf1nbw85YzRLkkbiIi6nIecoJrqyNacRoS6cph5sGpZOAMkkB+DFJGeTR1NuaBjD/rGFLP5UeRfav9mReH/vuLxvYLI5JrcT7zUVnJZu45zFx26TbmKY/pRE3Of5byF0cQvTfN36FLiEhUAPLuRS9HdORZ2urqWuQeu4TxsuhFtkMM59EnyzvpVzHjPOvlGvqqj+dZxzVEXPY2Iu+FnkRaGZvFWJgqtgYxHgMPIfssXol0dekQ0Yc5C4leHPkx13evZT5JO4RkeDKE7Rh9BURmpbq4v1cM/WZ7DZLs8tXMCQteos+1/Arpaf105nQRkdfbeZdH9buM/cat9MGBs3zH/HNEbE3czjtnvIV3+f6gXY7reWcfmk12/7h0ZGW/rbyjooV+s3QT2ygGf01UtXxS3hb18CiKoiiK4vbogkdRFEVRFLfnhpKWjxduyUgL93XFWdxOM7K/Ymzfag7nDNqNO7kyiB3/VV24ND8Xe8jYZ/yQBvyriHC6MxB32peWExUQWkpEQWc2bszEgEf43lhkDhGRrBkk29vhh3SxKo/Pj+/BHekZj0vRGkVC8DuLPLAjhOidleFEBVQ5IlI+tg936v4FrDEvRuJm9nfhXuyIR0qaSiZqaYdY3w8Ze/woERJF6bg2j7fQJmv9kRO6U6mv0tB5xk65uMrY5XHIgWNtuD5HY5G9wntwQfo4kuGVrkTS8/T+sLEvvTQ5Sivz05Sn7KgzOo/EV/PakQce2UwEx74X2Omfl0c7NzTgsj9Sj9yTv4KhMrgeN23LT4l6WJeFJHLhMJ9te4jxMlUkvIFUFzyLZG7Rp5EPmzpI9FVzB+Oo9jVHNFIa9fY5DyJZDkUQXRXeTxRMzQXqPDKc8uY3I1GNLWRcX/Aj4iayg36Q18ABkSIiabPoax7FHHB4tIeozsbXkTFm5tJ+1R8nKdvS0ipjVw0jXR1O/DzffRb5/EQlSe5yU4hGCcnnueNLab/pgVvl3SDGnz5vddAfT8XdzzXJhcauaKGdFzxLkkj/LiIO49Kpx+dG6L83V9EvMhqIDt3qj3wYGU+/Tn/NkfxvPdKVz094hj2OxH4iIgvP8+/gMeY2nzUkuAsrph1G/emHZSH7jZ3S5Th4OZ852/KnrQYHkczaJ5BN/AaRPkrtXxk7IBmpL6ecQ1KniriDjnosZ84ZbmHuT7iFbRGnGpkrbwqj3ocdZWzNpi/n1DFHB3sRQVd3ivfGpZD/MvZ8b2SyI6W8x1fdx7NdbHHUYc3kiLtHQ4mcOuBIujqnnvd0Z+zjxp6IZ24K24o83ZnJVoMxH8o/noGE6RXIu8izbJWxG2bTb7I6uebQztuNPZjHM7zTjKseHkVRFEVR3B5d8CiKoiiK4vbcUNJ6OoHop082lhp7XT3RNVuCcbk+2o0LdU82iZKqanGd/XU7O/sv27g0y0Nxd2W0RRj7G1eIZLo9iwiE4Pk856JXq4z9RCyJt/ImcIeLiAw+jstvvuN8kPhw3G4eBewYPyxIN8OJ7IwPeg2X/bx8XPG9p0niddUXl92J+Ugxu/rYPT8/CFfvk4FEDc1sf1jeDX7t90FjR9Q4onmScE3OHyOSqb6TyBuJZOd9UhfyVmQzySCvhtFfVl4m6uLHD9HmXzjIWUcdcVeMPfTrO43tmUBdj/Ugm8SFT+6uLVuQxPwSccNuTt1v7OFW+uEBG3d3viPCy7eI8o+to15WjNPnL1Sv4lkrkH4qliM/bOigfzVk4aK3QohIEPmATAU/fxCZdNyDMTLiRQTKHVcLjV1cSf0GBVCuuwaRJb7l6zJ2gieRP9nhuLRj86if9gObjX3FD5e7/07ORQpZQR86G4z0Nv0FEqOJiOz4j/+vvTMPjrM403jPjDTSSDPS6L5v67Ru67B8Sr5tHCzMZSAkEEISEpIsYRMSspvdTXazOSpJbS0hJCEVIECBAcfGIN+yfMuHLMk6LMk6R/et0X1r/9iq/n2qCqZ2mf1jVf389dZ49H1fd7/d3/h5+nmb5x4IwRGYHIV8mGjI594duE1sRawd5gTywJz5nIwnrjGXG/ZbZbx/Bvmh6DCunvmEEhlbA5Dhz1UjVXOS0GfHhniklVc05xrlDZPjnmXIhgHjyIPH3DkDa2c869epAfouOJD16C2N6+6BHFwu8ZnM/Yp6xt83hmfQtyGJVGrkqVRv1nghhJiYpQjeqkHWgobzWB/N3lYZl5kY/0f8cE5V+SCnRZ/kvaDTFIDs8UC2XuONxDHm8mcZu7U+JWOr/7/I2HTC8WvtZAxbLxY1Z02muNKW82+zdcLyeeaj7TjvEN81SFfVObxngm4iF05O8z7pD0dKCl36rYwvtH9Zxrs0Z3h1NzNvHh1nnaw0LOdBXp0m08cv4Chbdx+yfafmfMmkGdb7E2EjMs4dpm2zGrmubRufT51DhqyeR7beUMG8HlxDG/w0W00GolhzPwmK4VFQUFBQUFBY8VA/eBQUFBQUFBRWPO4qacV/DGVVngLVNH7/NRmbi5GNXp6HIvMYhboM9IfinpmkiFVRM+eJvOEFpXlQc+ZVylbozfImaDMxCIU6EcZ1ovJ5Hr+m5c2zx2mcYL3cY7APataYiHvEOoRct3AROrJ5Ey6H1cVQc1fiodkz06GTm0+zSz5KU82uaZ7Pn+vGFXNjUEsPO45y3RvN+UvBZ+iL6h30hVcFxavM0+iGtWG0TSeQcXx9kFPii5A+TnwfN9Zzr0CVH5vCVSCikBM8n+BegxeqZBzxEP0+9zJnBgkhRGjqP8i4qBTX2WIiFOn2JJ41ECVKtLbu4B6F7O5vroNqnthFHxm6Dst4gw+0eVJjhYwbNefG6OZop6WNPnIUUk+QIyaNnCecyHmfSOapXiABBGnOhTuVDeX+xXqu2Ta2W8ZXspGDHphEeq1cg1TXEsY4FQxDRS/0UhjNFIiDaPjfcTcKIUR4GPPFZVSTa83Ml+JA8vRed65Vv4O23XsEObSkgjXlXBZtyxhCGrneTju/ZT0q45NhyPPBo8zNybjlMrmjMNdBPq49RV96P4Gc1jNOnpriybUEJ1x0fe3IzWNpFG7Lc2aNC7zOXLuaR+HFjHc1Zyv5IMO75yA9+zTjlApDSRK1XcwzIYR4Mgops3kIyXh0J/3XdR63oLM7c/u3GczfzFLkHrdB7lHmQp4vxOJSmxc4noY0qql5dbGML7oXyrhpHXPkaQfJzf5drHeTIzzb77f8Vca791Dcb7iVd8hipr+Mg1yQEi+8zTwN3UDuJ4zxzu12w0HpM4ibLiaOeVA3RuFQcx+fFz/N+91exPWFEGLLr+lr5++xFhTPaPIigsKDXqcpurvJB+k9bYDx/kUO20gSryOTm3sZv407me/zZ1gHLurZCvKCjvG7WskZn58ExfAoKCgoKCgorHioHzwKCgoKCgoKKx53lbR2bIBGs8XiqBp4C7qzej108p5iqLzeTChq01movOqtyB73XOb7l85DqQVshtJumIB2y/T8lown+qCZ9QVQwGt/zK7tF58tXNaejXeQSma70vkHC/TrFyZzZVzngZvBaB+R8VNLUPlHrMgJOe7QyQ2/wkXR+xTFmjZ14w7rNxH32qH4/JNovyMxoKG1xzRS0eB13DOry5EQi7fj/nhO4xb5zWCrjH13cb5PmPsfZdzSu1PGJzNwWrkbobeThxjDlsG3Zbw/gLxoOp8v4zMWriOEELsMuAfWBkK1mifhssfLv8q1NqfL2Ofx9/hOD86DOXdyPuQM1Hq7D3/753Ekm4wtUPyuV5gXrik4GZOuI7d90hkv/1PsfPD3Mq4fgk6+dBpJ0pYIfT3bgTQyPo/Lw1BCDk6sIWenvZEk036FhNu6hzGIq0L2CU3G4RThxVgMWXDuuZ2lkOmtRY0DUAgRtJZrLV2DBg+agu53DiVPF24jCVgs5NShJBwy+hmcJ28GIfuc0EHFj4bjrBt4nXya8cOJ6WRBDok/TF47UG0WZ2/ifrI/inPKS8d8DDSyvizVIGl557IedQQh0cX5tMq4TiNFjUYgK62rQUIYaKSIqE8YczCiaETGNZE8zzbjce5bz98KIUSjjnG7GMT/qwsu4v4618eYfD4Yeb/3CFspjF6sEXcCyKXECKTSkCrWYKPhVzLu+SFzP/LnXNNSx1o2kItE6yiEBpPLnZsZS+8a1ty37MjlGyI0LkMT60/pHfo3N43tHDdvUoAzKYGceKSaNjbV8Z7tS8HVFLrxxzyoB7k8/hr57pXKu1gIISr/mdjSSb4ke7L2u77KfL4Uh0vL7MP7tKupRMbBrchb7dG8Z50TkKSb3ydnm534vu8M+VRqoJ2593xJ89RPir8FxfAoKCgoKCgorHioHzwKCgoKCgoKKx53lbQu97Jj3N8A3Z3qB20a8SEUulcOksZCDTLOYAaOlehXoRDrotmd7fwC1Lrtva/JeN0uCnK9r/+ljLOcfyTjyXqK2dm/CTX6AyPPI4QQk5Wac7IeZRf74DkK0l0ug/4LiUNaOhcF1Vg0zLN23YPTqEoH3R/YjqS3UIMrojQO6q/gKr836zsoAOcTgIvEkegycJZY6CyyzNZx+uzmAca5VQ8FW6w5byt8P7v4fd+Eur6WpSngd5rrxOdyVspMHTKRbbPm3BsMJeJUIX29oDkbKdeVvhZCiNijyBqlScgg8wH0/TsaN8CWCWSaig846819MxR/r52+0C9BTeeuQjaILGc8XaNwDyyF4Ty63sjnBwPJ4acEjsXPgpZ3obhb8ujHoIfp99WvQnFPhUMtj3riGhsO4Dq115APBjaSj7teeV3GbceQ50bDcDTOhSARNg0hDXnP/0XGt7N4zrgJxkgIIXr/whjEZSKlBo9CZY9XI8neDGQuZycjBzXW4uqJOMcY/GcV+bF6hGv2HOA8u8QsJJY9HjiWrq1Kl3GDjr5zjKfnvzFXwNaA+65wfpw9gvMAF5pw11mT6fubfpy/FDGJ7NdS8pCMA6KQ8Sxh9ONwK3PzUDz5vqcUWWJq8n0ZG+JYE36xfo2Mt5k1FkghRHcf7q+4Jc5xM7aQn95ejMN/9DHvvL5H0cKUa6yRzm8ge5c7k8+d0eROjAdx7Z+QqvtSeQflDCEVWVopxuooTASNyHjxOu3dtUCfVAXxzhpc0LgAPemTjCXes829OLCaPZmDl8SfZFyTzZhl+2sKNoaSH3deowDpzItIe9GV9NX6RJ5HCCEuuLD2zZiRweotfK/rHvLIWIfcmpdB8ce+jxizrFjmeEvtiIwHg2jP1D7yK0dTaNPfmffAoW4kVstHXGctx+stg2J4FBQUFBQUFFY81A8eBQUFBQUFhRWPu0pa5jAkrQt6aGPPRdwWIW4VMjaYoJBHxiJlnNoMnXzuh+y89h3h91ZjF59vtL/Edew4LZznsEUMCHb7x5u5V5/GpTIUyd8KIYS7C3S3rlsjrTRCU8/nWGW8MxWdxanzWRkbxs7IeOoSu+QNrhQ3u3cVsswbLdCR5nDa7NuDpHdzLTvjh27837i0vCuhx8MCrTIumcXl09XPLvz9c7h8ah5BorQWc2bJ/nTONzs8wDgP7MSp023DRREUi1w38xMoTps3YzOvQ+4I7yW2JVLQSgghAhKgZ23j0PRLDcQHWiNlfNkLaSkplM9NdlxLm3RQs43+yJu1vZzFo4/ACXjeCxr5mXpkkHY/8uvvQ3BhOArVP+K+Cy8hhyTfoDjbza3IdnFuzE1rzVkZ67twRVRFcn2XDoorjjZCs1dNQkVv9sX5dcUFV89UPHHiUXLCNPwdGevM/7SsPYHbuPnYEvlV2lsi47o03GL+7ny/7feMqymZAn7V/4jMklqM0+rEXhwyFgvnU80m/0HG/WV7eZ4mzglblc95RY5EkJl8+XAjbr+QadaUzceZR4Z05IibHTjklvwpxBbuQZ6a+1lfS/2RKzeFkTu58UjS+mSu82EQfZrSyvr18MVbMrZNM+ZCCBEYjyPWd4q18M4d1ppCD8ak3itdxs5/4FqDmUgtownIXkmZvLqcjjD+nYGFMnbfhcN3WxPj9m9+9F1ywBuap94rHIGJMsROoxV38198WZd2zDHvYnSaLQWdyPSn6pHnTKGchfbVWOTjCz305yM9jPd0MNeZGdKsjQbWjYAWtinMxCIZVfazBgohxOR8voz7o3FBxpcg4Xf7sC6EZltl3Htmj4xv7KQvRp1Zmxa8SmQ8dpn37OpspNThKt6JLSma4p/TmvdJ26dvBVEMj4KCgoKCgsKKh/rBo6CgoKCgoLDicVdJa9jJKuMYd3Z9h89Cv84YoY19G3HEWFZDG78yDrWYX4TkZEqCZnXyhQIdCGc3+0V/dmp/8QbXaQ/CXbLYxPlcdjPf18VApQohRGAg9HX9O+wkT0lDxjFacPK01UIt19iQ0CJCofJTpytk/HYe7b9+Cjfa83qKmz1fzS53QxcumplbfH8pATeVIxF+HxLl3G12ty+2M1Y7pipkfHsC+nIdpgJxrIDd+V8/AT2el0U7bzfThgPdyFvVGsnIYxMU/br10LoDZxibTrcRGe/WQ60LIUSXFwUGc4JwTjUZyM/zek3BsURoVPsAlP3wB8gGPj+AdrUvkgtRH+E86k9EQnjxGm0++AhOmIcv0tfVJVtpg4MKD3qfIf+XMjQ5ex2nzcQoEsVMOfNrNBOXx51RCqPpJjijZkcQFHXbKH14TxRj9q4TTqn4Subd6hyKLrbGs8ToRzkLqqti+dJzPpNr/fSvUPMV25GxdpbSttHkN2UcMQ/d/54N99KGKM6OOx3+QxknTVK0bts8smr7LDlU+aCm+F0tslznIWQA8eg3haOQOYLz81wzzrFUj3AZ125lPA1Girk+fYM5ZfucVcYVxXzfNYVzidbeZL43dzHOUW1IJTqvF2QcdvYnMu5L0MwzP84uynU+sqw9LU6sL0NNSMNLIfwfu6OZsb0czPaBrTlsmdAd5pzEgiSctQdtrCnBubQz1kI7F88jMV/aRPzITfL8sKb4nqMQv4WtFEW32AryYBfvvlIra4XegLs3cYqzt6Kz+NtmP9arKz30SUAz579duB+pTn+GuZJopEBg5O4iGRsuFsp4wZNnaLMyP4QQYlr/DRn39bDeb/Vhm8PeNNbczg8pJOgSi2z5FQ/cegeNkTKem0I+jzWy7cJyklzrKUDmTE9ijfYZ4XeJMZatCZ8ExfAoKCgoKCgorHioHzwKCgoKCgoKKx53lbRMNuQqrzB2SZ8Y5oySp7Ogta5oDAxr/jAi4ywTlKbZP1/GDWe5/tr9UI7ugVDaix3QdHWLULEuXThfpsP3y3iwukTGrvXshBdCiLEFziDRJyAJHO8j3jEJ9T8ZRoEjjywo+/AL0NpVfjitdt/m+fpScRf9qQUp7ZttSAJ1oTgQxt2haF3PsGNe/KtwGEI143nhMjJOWhYSVUkybUjspIjZh3ZkvJCPoTVDEqA7Pct/J+O8CdxCb27AyTY8zRjElHCd+VnoW5e19Kn1Ev34cRkSqBBCZO6F4q4+jcvNx59CeV5O22U8XYbckWaJlLH7C+TnqVKo2ekYqld57ELi6JxgLsx1ImmlnIXGX9CcV+RVrqX7tee9/O8xsIALY0nPMyd6IY0EtPDM/v7kWvUArpaWCHJ/dwdUf/XlF2Uc+xDuyLPXmRNbrCdlfHoc+jmpAYkhvJn5ZHDl/1fR9y4vImk6RjG476bxHNmdzBeXAOagUxljELAZKjvjWCEX7YCm39zJnHLaTd68Usy8e6qZgnd+w+T+5Vgk74AnkEwciY/s5Gagp1XGJ7Y9LOOwyxUyLrCMyLjquzzT6mdxXbV9mfVv9SJt6+ukv9Lime83ppEGJ/WHZfyQQM49Ilink+txab2rKWYohBCb3XmO4Thi39uabQkHyId14xR9fP847tDCwAoZn+ziHpH5SBzWdrYSHHJmjYsOIV+sjYxhvztxVANtcBRmNO81u0baa9YUhfTMJgcby1ij1ptZE2vbkTYn2pHzQz1Zu+3xSLJ5N5B3qnWMa886XMWdg8j6E8HkfvJcvowDBng2IYQwjONSXK3jfXz1pEY+78ZdtSqOc/5ur3lQxoM/w4nr9hWedWqBNdT9frZ2GDXbDkzDfGfwDG3zfZL17o3LSIZ4apdDMTwKCgoKCgoKKx7qB4+CgoKCgoLCisddJa2xVBwCunMU5wtOh+Iqm0PHCjoE7VQWjEwyNwIFNX2EQnXp30YOa9VssPZcpNDZgfhqGd+YxnWVlKWhaIv43PMZiiH5NXBulRBCzByluW7+SA47H2BneE85FKFnBeevzGUguRizkVzWN3C/8kqOqvczQtFHaiSH98KQ6zLsUL0h7lC6vU8vL+LlKLzU8G3utwvatW0ESnzPIM4WkztuJPdZzszaMA41WVSEVGDbQhtmg1plHFDKWS6WcI00eD+Sw/QlZAx7lqa4VTg7+13doGOFEKK/hbxy24czYuYWEqLnGI6BgVDG890S5DHXaauMs6eQ6FoyaFu7CapVP4b8MGuAfvee57mvTmvOownmvl8WjkHPCA7C+RbmoEfWBRlXRSPVuTlDrQfArIvwoxQkLN1HQcKdOyNlfPBHSAbJhfTbTCly2L7HoNlHinmehWSkrrEuzm/zPs9aIYQQQQXM569fZswrfZE0Y5uZO+FujH19L/lr3vGx5qpIkm1m/nbzMe4V6IfD7TcW3IF71uJ88j+Ga2Wkle84qE6dEEIIgy1dxpvWU3hx6mXWmjvJPNNELc6WmS5cqpXrX5Hx1QHmsreJBXbCxpgk3EHeGc8gx7PSPuKaM5rikXbmvo/m/Lo1w5p+EUJEtvF/6X4763BiKs6sg2dZFxNmS2Ts+ijuL9HNemy5ijwa1UHenrTxTvleLOv04RlyNaSZ9t/2RMYKjsVB6ShUWv+B+2aTmx31SEjNt2j7Dk/eX0djyMeEa8yvwGjev1cSkbo+dy5dxv09OB1b0plDzrWsh/kuzCejxhlYIlgnE6L4WyGEcFmF/NzYxXvNGEOhP0vdz2TsNIwst7qHtWNwB21wceIdH+2EBbi7jDX0RghFEiMHme8ZSaxrTR8h7W8IUoUHFRQUFBQUFBTUDx4FBQUFBQWFlY+7SlrGS9CX1aut/MMt6Kj7A6AKr/pXyNhrge+IPRxzb4+nWNyqcpw/vcnIOyMat0S4me9MenD9o9VQqAdSacaRt6HcMlJwpgghhM0PutMnZ0TG1y9Cj8b1IbN5rIaKnW6iINR7sTzT1jlotNnZQzLu/wJtzuyioFeQxqV1RyAZRfbifkhshPp3kKlHCCFE4QxUZXcHz9GZCK3dMfqAjNc1QME2pOC0mvZlN/ykRq4L74CaDa9l/K/7Q5dGT1FgsO916M7wxxmbjt8xHr37oCydvBhbIYSoFrQh8AIS3eAQhfWcc7m322UcIvftQIp6a0hzBs1OqNOOclwh2fXoQLWJUM1Tw8gPg4YRGfuYGNuK3VzfUcgN4F5mL/LU/QTPNuaLBOKikVJ1do0Tzxkn10QZz3y5GRky9HlkleCmCBmXbOZv8+oYp5p5aPN7dDg+XutivKNjeU4hhNh9Ghn3lW6eY6s3dHfTPHk6POAtY0MOjo+ZJebRzeZ7ZZxYiwxZn4HUkdfPM8VuYC2zl+LEXHwAGWbTyeVuJEfB2RVn27UZxmouFKnw8Xnaec4DWt8aiotqov/nMs5L4v+zqSeRGQ8+iwR0uoz2pIgK7ptCjlS8bZXxkieStJjDKdfvxxonhBA1M4Uynk9EOnmnmWfaOEIx1/BE5rzxDeb1zyIo0PcNZ8Z8ys41PSLJw19ayatVIbTH5sQcmXDm/KnuM+S2QPH/TEic+rOMy0/xzN1jzJHITTxn3QgSkNtV3lktj7DOdryPvJ4+Ra7UGunP4HUU5Ns4Sl67a3iN9g7W66RB3jNh9yMx33oLaUwIIWLNrH09LmwrCG5kzXa2sqVgaTO5c+sXvCsDtmu2EdRwvqT7Au+WgByken0NW0TME1y/18Z1Kvy4l77y07eCKIZHQUFBQUFBYcVD/eBRUFBQUFBQWPG4q6TVs4dd+I/egkJ9LQOp62wSToCxmz+S8UMXkB/e7mR3vV8au+LrIyhUZ9QVyrjhBajb9yqRYYZq75Pxd/ooPFhciONq2yyUYGUHu7yFECIrFirspVZ2g3/JCk034I1TZSgSZ1LIGHR6jB2KOyyCHf/ne7Jk7P9Hrt8Yg+xRbsAtkxGEo2baxPWr/SgYRtmxz465bZxRYy3hOeb8NXSvU5yMa5yQGSevUATKsO9xGS+dR7oKtOIWOdlJGyyJULMXNcUP9z/JOU5VvZw9tTUGmv12NxRn5PHlhSSDtkOp6juRQXMLkAEq7tDmQI2MVWRDKlm7iBuxZ76E63dDqXZEtsrYzcLns3uggufLGP/8C7gtglqYL2KPcAguN+L88vdCJtRFcq+MW8g7dRPQ1LGxuCUqn6+QsUsJEqYpFCnKo5P26mycvRTu/oSMr0cjVUe08beubqwbGSHQ0vZ05q8QQtzSFMMreMoq42YDuRnnz7xrCWNujnxIjiyFI+OtNnIG1MbHmeO6YuZa+QQydLOmOGG2nrVjrhSnaHUo8wbB7LNj1cYRGV8idYR+HOn+kj/51ReKPOv+AVJGxL3MtfIx+rTrANS/z6vMG/NjSB/FNuTKoCLmRLiR64+UIjeadiA3jeYvr5Dqc455oV9gPXdyYf6PxiJdtYRS0G58CFnumUgKio4ORcr4dgRStfd15C03U6uM/RuQkyYCyOHsWfrit49ptg84CC6+5FFYO2O2O6VExmduIGkNzTMXolfR73HvUKS1X5DXZbFsHbB+zHtmYYbxa6wnxzfmMmfLJ8mnaI38N2FFDorahntWCCF0x8ijh7xx0H1o5PNdevq0+oSVNjyDVKmfRlbuu4Gjt/rz3C/lNcY78T7exUd1vBN6lsjBuMZWGdtMn764KoZHQUFBQUFBYcVD/eBRUFBQUFBQWPG4q6RlX8VZGbaD0KDfj2e3ee1V5I03U9mpv0YgLa3v1uw29+JcIbPmfJAmC84OyxtQcOIxCtK5dkGhvTUIHTpcBS3ZmMd5MNl1UNFCCPFmI3/zBStyzaUFKMicdJwHTeeh48x+FB+rXgVVGnsF2jHSk93sg4tIDqWD9FehH/JecxdFC3v1ULTCZXlRNkdhZASnxljBX2W8/Rh9UfM0Rcm6KzQyk75Qxr31H8jYnBYp498J/jZ/FfLIfDsU7JfKGJP3xnbJuMWVomfW9TjfemugbM+FLC8stbEOiSTNF8dHuY287U5Hyogpgzot0DO2twuQRxJrGdubFqQx4ZYjQ3871x+uIudjEslhm4amHkvNF47GWifkWbfd9O/wcRwfS2txSAS5QPs7D0MPu7yEvBWeDM3cICiY5h2DsyP0NOvAhoifyvjlG8iNky3IPn0mcmU0gfv+XRH9LIQQT1i57tqZTTJOOM6YeU0wHtP3H5axPpPrtjeRswnTrB1v2hkPnREJLEJAofuayd/FHpw/vU5I+z7tSPgOs/UIISav80yTacgDu5JxbI2Wk+8pUczZscfzZXyoDmkib5o2GCpLZDwTiNyRMY7ku1CP9O4/HSnj1i18f95eIeP4WaTUsJNHl7XHawAJaaicd8H2vUiuJhttvn2L9WLt+BYZH26jnftayMlqT9ZUlzCkGa8OPq9yoT1eM7SzxYDE9rUKjZPXQfsH3PLIwduXimRsMrElY3wN76I8TXG+jiokv6tfZI1yfZ1tG652Pm/TFAUU/jjOMkYZM5uN968+mVwO70FuLq1G4l8fjDQmhBAWF9aaBSdkqcUEOqyhlLMTDZt+LePG40jp6637ZNwlWBf2NnK/q/eSH12vcv2uJ8iPWDPv6MAQxjvcg2KZQuSLvwXF8CgoKCgoKCiseKgfPAoKCgoKCgorHrqlpaVP/5aCgoKCgoKCwv9jKIZHQUFBQUFBYcVD/eBRUFBQUFBQWPFQP3gUFBQUFBQUVjzUDx4FBQUFBQWFFQ/1g0dBQUFBQUFhxUP94FFQUFBQUFBY8fgv7HNjCjnpqSEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x576 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualize the learned weights for each class\n",
    "w = best_softmax.W[:-1,:] # strip out the bias\n",
    "w = w.reshape(32, 32, 3, 10)\n",
    "\n",
    "w_min, w_max = np.min(w), np.max(w)\n",
    "\n",
    "classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i + 1)\n",
    "    \n",
    "    # Rescale the weights to be between 0 and 255\n",
    "    wimg = 255.0 * (w[:, :, :, i].squeeze() - w_min) / (w_max - w_min)\n",
    "    plt.imshow(wimg.astype('uint8'))\n",
    "    plt.axis('off')\n",
    "    plt.title(classes[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
